Pagini recente » Cod sursa (job #280234) | Cod sursa (job #18103) | Cod sursa (job #2471223) | Cod sursa (job #2605333) | Cod sursa (job #101953)
Cod sursa(job #101953)
Utilizator |
Mircea Pasoi domino |
Data |
13 noiembrie 2007 22:34:05 |
Problema |
Teren |
Scor |
Ascuns |
Compilator |
cpp |
Status |
done |
Runda |
|
Marime |
0.88 kb |
#include <stdio.h>
#include <string.h>
#define MAX_N 305
#define FIN "teren.in"
#define FOUT "teren.out"
#define max(a, b) ((a) > (b) ? (a) : (b))
int N, M, X, A[MAX_N][MAX_N], S[MAX_N], Res;
int main(void)
{
int i, j, k, p, sum;
freopen(FIN, "r", stdin);
freopen(FOUT, "w", stdout);
scanf("%d %d %d", &N, &M, &X);
for (i = 0; i < N; ++i)
for (j = 0; j < M; ++j)
scanf("%d", A[i]+j);
for (i = 0; i < N; ++i)
{
memset(S, 0, sizeof(S));
for (j = i; j < N; ++j)
for (p = sum = k = 0; k < M; ++k)
{
S[k] += A[j][k]; sum += S[k];
for (; p <= k && sum > X; ++p)
sum -= S[p];
if (p > k) continue;
Res = max(Res, (j-i+1)*(k-p+1));
}
}
printf("%d\n", Res);
return 0;
}