제출 #833280

#제출 시각아이디문제언어결과실행 시간메모리
833280vjudge1Bomb (IZhO17_bomb)C++17
24 / 100
311 ms49372 KiB
#include <bits/stdc++.h> using namespace std; int n, m; const int maxn = 2504; int chainw[maxn][maxn]; int chainh[maxn][maxn]; int getParentW(int i, int j) { if (chainw[i][j+1] != 0) return getParentW(i, j+1); return j; } int getParentH(int i, int j) { if (chainh[i+1][j] != 0) return getParentH(i+1, j); return i; } int main() { cin >> n >> m; int all0 = true; for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { char x; cin >> x; if (x == '1') { all0 = false; chainw[i][j] = chainw[i][j-1]+1; chainh[i][j] = chainh[i-1][j]+1; } } } if (all0) { cout << 0 << endl; return 0; } int maxpossiblew = maxn; int maxpossibleh = maxn; for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { j = getParentW(i, j); if (chainw[i][j] == 0) continue; maxpossiblew = min(maxpossiblew, chainw[i][j]); } // if (maxw[i] == 0) continue; // maxpossiblew = min(maxpossiblew, chainw[i][maxw[i]]); } for (int j = 1; j <= m; j++) { for (int i = 1; i <= n; i++) { i = getParentH(i, j); if (chainh[i][j] == 0) continue; maxpossibleh = min(maxpossibleh, chainh[i][j]); } // if (maxw[i] == 0) continue; // maxpossiblew = min(maxpossiblew, chainw[i][maxw[i]]); } cout << maxpossibleh * maxpossiblew << endl; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...