제출 #94314

#제출 시각아이디문제언어결과실행 시간메모리
94314KastandaBomb (IZhO17_bomb)C++11
90 / 100
105 ms56824 KiB
#include<bits/stdc++.h> using namespace std; const int N = 2505; int n, m, Mnx, R[N], up[N][N], dn[N][N]; char A[N][N]; int main() { scanf("%d%d", &n, &m); for (int i = 1; i <= n; i++) scanf("%s", &A[i][1]); for (int i = 1; i <= n; i++) for (int j = 1; j <= m; j++) { up[i][j] = i - 1; if (A[i - 1][j] == '1') up[i][j] = up[i - 1][j]; } for (int i = n; i; i--) for (int j = 1; j <= m; j++) { dn[i][j] = i + 1; if (A[i + 1][j] == '1') dn[i][j] = dn[i + 1][j]; } memset(R, 63, sizeof(R)); for (int i = 1; i <= n; i++) { int l = 0, r = n + 1, c = 0; for (int j = 1; j <= m; j++) { c ++; if (A[i][j] == '1') { l = max(l, up[i][j]); r = min(r, dn[i][j]); R[c] = min(R[c], r - l - 1); } else { if (A[i][j - 1] == '1') R[c] = 0; l = 0; r = n + 1; c = 0; } } l = 0, r = n + 1, c = 0; for (int j = m; j; j--) { c ++; if (A[i][j] == '1') { l = max(l, up[i][j]); r = min(r, dn[i][j]); R[c] = min(R[c], r - l - 1); } else { if (A[i][j + 1] == '1') R[c] = 0; l = 0; r = n + 1; c = 0; } } } int Mx_s = 0; for (int i = 1; i <= m; i++) { R[i] = min(R[i], R[i - 1]); Mx_s = max(Mx_s, i * R[i]); } return !printf("%d", Mx_s); }

컴파일 시 표준 에러 (stderr) 메시지

bomb.cpp: In function 'int main()':
bomb.cpp:8:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d%d", &n, &m);
     ~~~~~^~~~~~~~~~~~~~~~
bomb.cpp:10:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%s", &A[i][1]);
         ~~~~~^~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...