#include<stdio.h> #define MAX 400 int count[MAX][MAX], data[MAX][MAX], N, M, MIN, ans; int main() { int i, j, k; scanf("%d%d", &N, &M); for (i = 1; i <= N; i++) { for (j = 1; j <= M; j++) { scanf("%1d", &data[i][j]); if (data[i][j] == 0) { count[i][j] = count[i - 1][j] + 1; } } } for (i = 1; i <= N; i++) { for (j = 1; j <= M; j++) { if (count[i][j] == 0) { continue; } MIN = 2000000000; for (k = j; k >= 1; k--) { if (count[i][k]<MIN) { MIN = count[i][k]; } if ((j - k + 1)*MIN>ans) { ans = (j - k + 1)*MIN; } } } } printf("%d", ans); return 0; }
1687번: 행렬 찾기
https://www.acmicpc.net/problem/1687
피드 구독하기:
댓글
(
Atom
)
댓글 없음 :
댓글 쓰기