Cod sursa(job #1289073)

Utilizator pepsiM4A1Ozturk Arif pepsiM4A1 Data 9 decembrie 2014 14:06:49
Problema Teren Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <stdio.h>
int n,m,x;
int a[301][301],b[301][301];
int maxim(int a,int b)
{
    if(a<b) return b;
    return a;
}
int main()
{
    FILE *fin,*fout;
    fin=fopen("teren.in","r");
    fout=fopen("teren.out","w");
    fscanf(fin,"%d %d %d",&n,&m,&x);
    for(int i=1;i<=n;i++) 
    {
            for(int j=1;j<=m;j++) 
            {
                    fscanf(fin,"%d",&b[i][j]);
                    if(b[i][j]==1)
                    {
                                  for(int k=1;k<=n;k++) a[k][j]+=1; 
                    }
            }
    }
    for(int i=1;i<=n;i++)
    {
            for(int j=2;j<=m;j++)
            {
                    a[i][j]+=a[i][j-1];
            }
    }
    int max=0,sum=0;
    for(int i=1;i<=n;i++)
    {
            for(int j=1;j<=m;j++)
            {
                    //fprintf(fout,"%d ",a[i][j]);
                    for(int k=j;k<=m;k++)
                    {
                            if(a[i][k]-a[i][j-1]>x) break;
                            if(max<i*(k-j+1)) max=i*(k-j+1);
                    }
            }
            //fprintf(fout,"\n");
    }
    fprintf(fout,"%d", max);
}