Cod sursa(job #1879680)

Utilizator mariusn01Marius Nicoli mariusn01 Data 15 februarie 2017 09:01:56
Problema Teren Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <fstream>
#include <iostream>
#define DIM 310
using namespace std;

int a[DIM][DIM];
int n, m, x, p, u, s, maxim, y, aria;
int main () {
    ifstream fin ("teren.in");
    ofstream fout("teren.out");
    fin>>n>>m>>x;
    for (int i=1;i<=n;i++) {
        for (int j=1;j<=m;j++) {
            fin>>y;
            //cout<<y<<" ";
            a[i][j] = a[i-1][j] + y;
        }
        //cout<<"\n";
    }

    for (int i=1;i<=n;i++)
        for (int j=i;j<=n;j++) {
            p = 1;
            s = 0;
            for (u=1;u<=m;u++) {
                s+=(a[j][u] - a[i-1][u]);
                while(s > x && p<=u) {
                    s -= (a[j][p] - a[i-1][p]);
                    p++;
                }
                if (p<= u && s <= x && (j-i+1) * (u-p+1) >= aria) {
                    aria = (j-i+1) * (u-p+1);
                }
            }
        }
    fout<<aria;

    return 0;
}