Cod sursa(job #1580394)

Utilizator alexpetrescuAlexandru Petrescu alexpetrescu Data 25 ianuarie 2016 20:30:07
Problema Teren Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <cstdio>
#define MAXN 300
int m[MAXN+1][MAXN+1], s[MAXN+1];
int main(){
    int nrlin, nrcol, k, i, j, ans, sum, p, l;
    FILE *fin, *fout;
    fin=fopen("teren.in", "r");
    fout=fopen("teren.out", "w");
    fscanf(fin, "%d%d%d", &nrlin, &nrcol, &k);
    for(i=1; i<=nrlin; i++){
        for(j=1; j<=nrcol; j++){
            fscanf(fin, "%d", &m[i][j]);
        }
    }
    ans=0;
    for(i=1; i<=nrlin; i++){
        for(j=1; j<=nrcol; j++){
            s[j]=0;
        }
        for(l=i; l<=nrlin; l++){
            p=1;
            sum=0;
            for(j=1; j<=nrcol; j++){
                s[j]+=m[l][j];
                sum+=s[j];
                while(sum>k){
                    sum-=s[p];
                    p++;
                }
                if(ans<(l-i+1)*(j-p+1)){
                    ans=(l-i+1)*(j-p+1);
                }
            }
        }
    }
    fprintf(fout, "%d\n", ans);
    fclose(fin);
    fclose(fout);
    return 0;
}