Submission #170421

# Submission time Handle Problem Language Result Execution time Memory
170421 2019-12-25T07:39:21 Z davitmarg Bomb (IZhO17_bomb) C++17
39 / 100
569 ms 51304 KB
/*DavitMarg*/
#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <string>
#include <cstring>
#include <map>
#include <unordered_map>
#include <set>
#include <queue>
#include <iomanip>
#include <bitset>
#include <stack>
#include <cassert>
#include <iterator>
#include <fstream>
#define mod 1000000007ll
#define LL long long
#define LD long double
#define MP make_pair
#define PB push_back
#define all(v) v.begin(), v.end()
using namespace std;

const int N = 2505;

int n, m, a[N][N], nxt[N][N], d[N], Y, X, ans;

int main()
{
    cin >> n >> m;

    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= m; j++)
        {
            char x;
            scanf(" %c", &x);
            a[i][j] += (x - '0');
        }
    X = m;
    Y = n;
    for (int i = 1; i <= n; i++)
        for (int j = m; j >= 1; j--)
        {
            if (a[i][j])
                nxt[i][j] = nxt[i][j + 1] + 1;
            else
                nxt[i][j] = 0;
            if (a[i][j - 1] == 0 && a[i][j])
                X = min(X, nxt[i][j]);
        }
    for (int j = 1; j <= m; j++)
    {
        int y = 0;
        for (int i = 1; i <= n; i++)
        {
            if (a[i][j])
                y++;
            else
                y = 0;
            if (a[i][j] && a[i + 1][j] == 0)
                Y = min(y, Y);
        }
    }

    for (int i = 1; i <= Y; i++)
        d[i] = X;
    for (int j = 1; j <= m; j++)
    {
        int y = 0, x = X;
        for (int i = 1; i <= n; i++)
        {
            if (a[i][j] == 0 || ((a[i][j - 1] == 1 || a[i - 1][j] == 1) && y == 0))
            {
                y = 0;
                x = X;
            }
            else
            {
                y++;
                x = min(x, nxt[i][j]);
                d[y] = min(x, d[y]);
            }
            //cout << i << " : " << j << " = " << y << " : " << x << endl;
        }
    }

    for (int j = 1; j <= m; j++)
    {
        int y = 0, x = X;
        for (int i = n; i >= 1; i--)
        {
            if (a[i][j] == 0 || ((a[i][j - 1] == 1 || a[i - 1][j] == 1) && y == 0))
            {
                y = 0;
                x = X;
            }
            else
            {
                y++;
                x = min(x, nxt[i][j]);
                d[y] = min(x, d[y]);
            }
            //cout << i << " : " << j << " = " << y << " : " << x << endl;
        }
    }

    for (int i = 1; i <= Y; i++)
    {
        //d[i + 1] = min(d[i + 1], d[i]);
        //cout << i << " : " << d[i] << endl;
        ans = max(ans, i * d[i]);
    }
    cout << ans << endl;
    return 0;
}

/*

10 8
00000000
00111000
00111000
11111110
11101110
11111110
00111000
00111000
00000000
00000000
 
6 6
000111
000111
001111
111100
111000
111000
 
*/

Compilation message

bomb.cpp: In function 'int main()':
bomb.cpp:38:18: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
             scanf(" %c", &x);
             ~~~~~^~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 3 ms 376 KB Output is correct
2 Correct 2 ms 504 KB Output is correct
3 Correct 22 ms 20472 KB Output is correct
4 Correct 21 ms 20344 KB Output is correct
5 Correct 2 ms 376 KB Output is correct
6 Correct 2 ms 376 KB Output is correct
7 Correct 2 ms 376 KB Output is correct
8 Incorrect 2 ms 504 KB Output isn't correct
9 Incorrect 2 ms 504 KB Output isn't correct
10 Correct 2 ms 376 KB Output is correct
11 Incorrect 2 ms 504 KB Output isn't correct
12 Incorrect 2 ms 504 KB Output isn't correct
13 Correct 2 ms 504 KB Output is correct
14 Correct 2 ms 504 KB Output is correct
15 Incorrect 2 ms 504 KB Output isn't correct
16 Correct 2 ms 504 KB Output is correct
17 Correct 3 ms 888 KB Output is correct
18 Correct 3 ms 888 KB Output is correct
19 Incorrect 3 ms 1144 KB Output isn't correct
20 Incorrect 3 ms 1144 KB Output isn't correct
21 Correct 2 ms 760 KB Output is correct
22 Correct 3 ms 1016 KB Output is correct
23 Incorrect 3 ms 1144 KB Output isn't correct
24 Incorrect 3 ms 1016 KB Output isn't correct
25 Incorrect 3 ms 1272 KB Output isn't correct
26 Correct 3 ms 1272 KB Output is correct
27 Correct 10 ms 3420 KB Output is correct
28 Incorrect 11 ms 3704 KB Output isn't correct
29 Incorrect 13 ms 4600 KB Output isn't correct
30 Incorrect 17 ms 5496 KB Output isn't correct
31 Incorrect 14 ms 4344 KB Output isn't correct
32 Incorrect 15 ms 4984 KB Output isn't correct
33 Incorrect 18 ms 5752 KB Output isn't correct
34 Incorrect 9 ms 3832 KB Output isn't correct
35 Incorrect 17 ms 5752 KB Output isn't correct
36 Correct 20 ms 5752 KB Output is correct
37 Incorrect 2 ms 504 KB Output isn't correct
38 Correct 557 ms 50596 KB Output is correct
39 Incorrect 2 ms 504 KB Output isn't correct
40 Incorrect 63 ms 13816 KB Output isn't correct
41 Correct 2 ms 504 KB Output is correct
42 Correct 3 ms 1144 KB Output is correct
43 Correct 546 ms 50524 KB Output is correct
44 Correct 19 ms 5880 KB Output is correct
45 Incorrect 549 ms 50552 KB Output isn't correct
46 Correct 523 ms 50692 KB Output is correct
47 Incorrect 551 ms 50552 KB Output isn't correct
48 Correct 525 ms 50564 KB Output is correct
49 Correct 552 ms 50576 KB Output is correct
50 Incorrect 531 ms 50680 KB Output isn't correct
51 Incorrect 533 ms 50564 KB Output isn't correct
52 Correct 530 ms 50652 KB Output is correct
53 Incorrect 526 ms 50604 KB Output isn't correct
54 Correct 534 ms 50808 KB Output is correct
55 Incorrect 508 ms 50680 KB Output isn't correct
56 Correct 545 ms 50672 KB Output is correct
57 Incorrect 510 ms 50680 KB Output isn't correct
58 Correct 510 ms 50568 KB Output is correct
59 Correct 512 ms 50680 KB Output is correct
60 Correct 525 ms 50552 KB Output is correct
61 Correct 551 ms 50680 KB Output is correct
62 Correct 560 ms 50680 KB Output is correct
63 Correct 569 ms 50496 KB Output is correct
64 Correct 512 ms 50808 KB Output is correct
65 Correct 525 ms 50524 KB Output is correct
66 Incorrect 524 ms 50636 KB Output isn't correct
67 Correct 537 ms 50684 KB Output is correct
68 Incorrect 542 ms 50552 KB Output isn't correct
69 Correct 512 ms 50616 KB Output is correct
70 Incorrect 309 ms 40440 KB Output isn't correct
71 Incorrect 498 ms 50680 KB Output isn't correct
72 Incorrect 505 ms 50552 KB Output isn't correct
73 Incorrect 507 ms 50616 KB Output isn't correct
74 Incorrect 508 ms 50680 KB Output isn't correct
75 Incorrect 505 ms 50552 KB Output isn't correct
76 Incorrect 513 ms 50680 KB Output isn't correct
77 Incorrect 508 ms 50552 KB Output isn't correct
78 Incorrect 507 ms 50672 KB Output isn't correct
79 Incorrect 492 ms 50680 KB Output isn't correct
80 Incorrect 490 ms 50660 KB Output isn't correct
81 Incorrect 489 ms 50720 KB Output isn't correct
82 Incorrect 513 ms 50552 KB Output isn't correct
83 Incorrect 510 ms 50672 KB Output isn't correct
84 Incorrect 489 ms 50552 KB Output isn't correct
85 Incorrect 507 ms 50584 KB Output isn't correct
86 Incorrect 548 ms 50680 KB Output isn't correct
87 Incorrect 505 ms 50552 KB Output isn't correct
88 Incorrect 511 ms 50680 KB Output isn't correct
89 Incorrect 520 ms 50680 KB Output isn't correct
90 Incorrect 312 ms 40824 KB Output isn't correct
91 Incorrect 531 ms 50552 KB Output isn't correct
92 Incorrect 518 ms 50556 KB Output isn't correct
93 Incorrect 550 ms 50680 KB Output isn't correct
94 Incorrect 522 ms 50596 KB Output isn't correct
95 Incorrect 517 ms 51192 KB Output isn't correct
96 Incorrect 519 ms 51168 KB Output isn't correct
97 Incorrect 551 ms 51184 KB Output isn't correct
98 Incorrect 509 ms 51192 KB Output isn't correct
99 Incorrect 525 ms 51168 KB Output isn't correct
100 Incorrect 546 ms 51304 KB Output isn't correct