Cod sursa(job #896116)

Utilizator BlackLordFMI Alex Oprea BlackLord Data 27 februarie 2013 13:53:34
Problema Teren Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <fstream>
using namespace std;
FILE*f=fopen("teren.in", "r");
FILE*g=fopen("teren.out", "w");
int n, m, x, v[310][310], s[310][310], i, j, p, ii, jj, a, maxim;
int main(){
    fscanf(f, "%d %d %d", &n, &m, &x);
    for(i=1; i<=n; i++)
        for(j=1; j<=m; j++)
            fscanf(f, "%d", &v[i][j]);
    fclose(f);
    for(i=1; i<=n; i++)
        for(j=1; j<=m; j++)
            s[i][j]=v[i][j]+s[i-1][j]+s[i][j-1]-s[i-1][j-1];
    for(i=1; i<=n; i++)
        for(ii=i; ii<=n; ii++)
        {
            p = 1;
            for (u=1;u<=m;u++) {
                while (s[j][u] + s[i-1][p-1] - s[j][p-1] - s[i-1][u] > x) {
                    p++;
                }
                if ((u-p+1) * (j-i+1) > maxim)
                    maxim = (u-p+1) * (j-i+1);

            }
        }
    fprintf(g, "%d\n", maxim);
    fclose(g);
    return 0;
}