Submission #173232

#TimeUsernameProblemLanguageResultExecution timeMemory
173232VEGAnnBomb (IZhO17_bomb)C++14
100 / 100
573 ms75540 KiB
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> #define sz(x) ((int)x.size()) #define MP make_pair #define ft first #define sd second #define pii pair<int, int> #define PB push_back using namespace std; using namespace __gnu_pbds; template <class T> using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>; const int N = 2510; const int oo = 2e9; int n, m, ans, a[N][N], mx = oo, pr[N][N], best[N], nt[N][N], mnw = oo; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cin >> n >> m; for (int i = 1; i <= n; i++) for (int j = 1; j <= m; j++){ char c; cin >> c; a[i][j] = (c == '1' ? 1 : 0); } for (int j = 1; j <= m; j++){ for (int i = 1; i <= n; ){ if (a[i][j] == 0) i++; else { int i1 = i; while (i1 <= n && a[i1][j] == 1) i1++; mx = min(mx, i1 - i); i = i1; } } } for (int i = 1; i <= n; i++){ for (int j = 1; j <= m; ){ if (a[i][j] == 0) j++; else { int i1 = j; while (i1 <= m && a[i][i1] == 1) i1++; mnw = min(mnw, i1 - j); j = i1; } } } fill(best, best + n + 1, oo); for (int i = 1; i <= n; i++){ int pre = 0; for (int j = 1; j <= m; j++){ if (a[i][j] == 0) pre = j; pr[i][j] = pre + 1; } pre = m + 1; for (int j = m; j > 0; j--){ if (a[i][j] == 0) pre = j; nt[i][j] = pre - 1; } } for (int j = 1; j <= m; j++){ int lf = 0, rt = m + 1, len = 0; for (int i = 1; i <= n; i++) if (a[i][j] == 1){ lf = max(lf, pr[i][j]); rt = min(rt, nt[i][j]); len++; best[len] = min(best[len], rt - lf + 1); } else { len = lf = 0; rt = m + 1; } lf = 0, rt = m + 1, len = 0; for (int i = n; i > 0; i--) if (a[i][j] == 1){ lf = max(lf, pr[i][j]); rt = min(rt, nt[i][j]); len++; best[len] = min(best[len], rt - lf + 1); } else { len = lf = 0; rt = m + 1; } } for (int i = 1; i <= mx; i++) { if (best[i] == oo) return -1; ans = max(ans, min(mnw, best[i]) * i); } cout << ans << '\n'; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...