Cod sursa(job #972117)

Utilizator antonioteoZait Teodor Antonio antonioteo Data 11 iulie 2013 00:41:08
Problema Teren Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <cstdio>
#include <algorithm>
using namespace std;

#define NMAX 301

int N, M, X;
int x, p;
int S, ANS;

int Nr1[NMAX][NMAX];

int main() {
	freopen("teren.in","r",stdin);
	freopen("teren.out","w",stdout);
	scanf("%i%i%i", &N, &M, &X);
	for (int i = 1; i <= N; ++i) {
		for (int j = 1; j <= M; ++j) {
			scanf("%i", &x);
			Nr1[i][j] = Nr1[i - 1][j] + x;
		}
	}
	for (int i = 1; i <= N; ++i) {
		for (int k = i; k <= N; ++k) {
			p = 1; S = 0;
			for (int j = 1; j <= M; ++j) {
				while (p <= M && S + Nr1[k][p] - Nr1[i - 1][p] <= X) {
					S += Nr1[k][p] - Nr1[i - 1][p];
					++p;
				}
				ANS = max(ANS, (k - i + 1) * (p - j));
				S -= Nr1[k][j] - Nr1[i - 1][j];
			}
		}
	}
	printf("%i\n", ANS);
	return 0;
}