Post3

#include <stdio.h>
#define max(a,b) (a>b)?a:b
int sum[100][100];
int inf = 1<<25;
int SUM(int si,int sj,int ei,int ej)
{
    int res = sum[ei][ej];
    if(sj-1>=0)
        res-=sum[ei][sj-1];
    if(si-1>=0)
        res-=sum[si-1][ej];
    if(si-1>=0&&sj-1>=0)
        res+=sum[si-1][sj-1];
    return res;
}
int main()
{
    int i,j,y,x,N,M,m,c;
    char buffer[100];
    scanf("%d",&c);
    getchar();
    getchar();
    while(c--)
    {
        N = 0;
        M = 0;
        while(gets(buffer)&&buffer[0])
        {
            for(M=0;buffer[M];M++)
                sum[N][M]=buffer[M]-'0';
            N++;
        }
        for(i=0;i<N;i++)
            for(j=1;j<M;j++)
                sum[i][j]+=sum[i][j-1];
        for(i=0;i<M;i++)
            for(j=1;j<N;j++)
                sum[j][i]+=sum[j-1][i];
        m = 0;
        for(i=0;i<N;i++)
            for(j=0;j<M;j++)
                for(y=i;y<N;y++)
                    for(x=j;x<M;x++)
                        if(SUM(i,j,y,x)==(y-i+1)*(x-j+1))
                            m = max(m,(y-i+1)*(x-j+1));
        printf("%d\n",m);
        if(c)
            putchar('\n');
    }
    return 0;
}

Leave a comment