Cod sursa(job #1787575)

Utilizator giotoPopescu Ioan gioto Data 24 octombrie 2016 20:07:30
Problema Teren Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <cstdio>
using namespace std;

int Max = 0, n, m, x, a[302][302], s[302][302];
int main()
{
    freopen("teren.in", "r", stdin);
    freopen("teren.out", "w", stdout);
    scanf("%d%d%d", &n, &m, &x);
    for(int i = 1; i <= n ; ++i){
        for(int j = 1; j <= m ; ++j){
            scanf("%d", &a[i][j]);
            s[i][j] = s[i - 1][j] + a[i][j];
        }
    }
    for(int i = 1; i <= n ; ++i){
        for(int j = i; j <= n ; ++j){
            int Sum = 0, Last = 0;
            for(int t = 1; t <= m ; ++t){
                Sum = Sum + s[j][t] - s[i - 1][t];
                while(Sum > x){
                    ++Last;
                    Sum = Sum - s[j][Last] - s[i - 1][Last];
                }
                if((j - i + 1) * (t - Last) > Max)
                    Max = (j - i + 1) * (t - Last);
            }
        }
    }
    printf("%d", Max);
    return 0;
}