페이지

1687번: 행렬 찾기

https://www.acmicpc.net/problem/1687


#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;
}

댓글 없음 :

댓글 쓰기