Submission #173273

#TimeUsernameProblemLanguageResultExecution timeMemory
173273apostoldaniel854Bomb (IZhO17_bomb)C++14
0 / 100
5 ms568 KiB
#include <bits/stdc++.h> using namespace std; const int N = 2500; char a[1 + N][1 + N]; int lst[1 + N + 1][1 + N + 1]; int nxt[1 + N + 1][1 + N + 1]; int best[1 + N]; int main () { freopen ("bomb.in", "r", stdin); freopen ("bomb.out", "w", stdout); ios::sync_with_stdio (false); cin.tie (0); cout.tie (0); int n, m; cin >> n >> m; for (int i = 1; i <= n; i++) for (int j = 1; j <= m; j++) cin >> a[i][j], a[i][j] -= '0'; int mxl = n; for (int j = 1; j <= m; j++) for (int i = 1; i <= n; i++) { if (a[i][j] == 0) continue; int k = i; while (k <= n && a[k + 1][j] == 1) k++; mxl = min (mxl, k - i + 1); i = k; } int mxc = m; for (int i = 1; i <= n; i++) for (int j = 1; j <= m; j++) { if (a[i][j] == 0) continue; int k = j; while (k <= m && a[i][k + 1] == 1) k++; mxc = min (mxc, k - j + 1); j = k; } for (int i = 1; i <= n; i++) { lst[i][0] = 1; for (int j = 1; j <= m; j++) { lst[i][j] = lst[i][j - 1]; if (a[i][j] == 0) lst[i][j] = j + 1; } nxt[i][m + 1] = m; for (int j = m; j > 0; j--) { nxt[i][j] = nxt[i][j + 1]; if (a[i][j] == 0) nxt[i][j] = j - 1; } } for (int i = 1; i <= n; i++) best[i] = m + 1; for (int j = 1; j <= m; j++) { int cur = 0; int l = 0, r = m + 1; for (int i = 1; i <= n; i++) { if (a[i][j] == 0) cur = 0; else { cur++; l = max (l, lst[i][j]); r = min (r, nxt[i][j]); best[cur] = min (best[cur], r - l + 1); } } cur = 0; l = 0, r = m + 1; for (int i = n; i > 0; i--) { if (a[i][j] == 0) cur = 0; else { cur++; l = max (l, lst[i][j]); r = min (r, nxt[i][j]); best[cur] = min (best[cur], r - l + 1); } } } int ans = 0; for (int i = 1; i <= mxl; i++) ans = max (ans, min (mxc, best[i]) * i); cout << ans << "\n"; return 0; }

Compilation message (stderr)

bomb.cpp: In function 'int main()':
bomb.cpp:13:13: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result]
     freopen ("bomb.in", "r", stdin);
     ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
bomb.cpp:14:13: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result]
     freopen ("bomb.out", "w", stdout);
     ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...