Cod sursa(job #1527488)

Utilizator Ruxandra985Nanu Ruxandra Laura Ruxandra985 Data 18 noiembrie 2015 10:22:45
Problema Teren Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <fstream>

using namespace std;
int a[302][302],s[302][302];
int main()
{
    FILE *fin=fopen ("teren.in","r");
    FILE *fout=fopen ("teren.out","w");
    int n,m,x,i,j,maxi,y,ii,jj,ar;
    fscanf (fin,"%d%d%d",&n,&m,&x);
    for (i=1;i<=n;i++)
        for (j=1;j<=m;j++)
             fscanf (fin,"%d",&a[i][j]);
    for (i=1;i<=n;i++)
        for (j=1;j<=m;j++)
        s[i][j]=s[i-1][j]+s[i][j-1]-s[i-1][j-1]+a[i][j];
    // avem matricea cu sume partiale
    maxi=0;
    for (i=1;i<=n;i++)
        for (ii=i;ii<=n;ii++){
        // am fixat 2 linii
        j=jj=1;
        while (j<=n){
            y=s[ii][jj]-s[ii][j-1]-s[i-1][jj]+s[i-1][j-1];
            if (y<=x){
                ar=(ii-i+1)*(jj-j+1);
                if (ar>maxi) maxi=ar;
                jj++;
                if (jj>n){
                    jj--;
                    j++;
                }
            }
            else j++;
        }
    }
    fprintf (fout,"%d",maxi);
    return 0;
}