Pagini recente » Cod sursa (job #1054951) | Cod sursa (job #1636623) | Cod sursa (job #3263119) | Cod sursa (job #735783) | Cod sursa (job #2875646)
#include <bits/stdc++.h>
#define MAXN 300
using namespace std;
ifstream fin("teren.in");
ofstream fout("teren.out");
int n, m, x, mat[MAXN + 1][MAXN];
void citire() {
fin >> n >> m >> x;
for (int i = 1; i <= n; i++)
for (int j = 0; j < m; j++)
fin >> mat[i][j];
}
void sume_partiale() {
for (int j = 0; j < m; j++)
for (int i = 2; i <= n; i++)
mat[i][j] += mat[i - 1][j];
}
void rezolvare() {
sume_partiale();
int maxi = 0;
for (int j = n; j >= 1; j--)
for (int i = 1; i <= j; i++) {
int a[MAXN];
for (int k = 0; k < m; k++)
a[k] = mat[j][k] - mat[i - 1][k];
int st = 0, dr = 0, sum = 0;
while (dr < m) {
sum += a[dr];
while (st <= dr && sum > x)
sum -= a[st++];
int arie = (j - i + 1) * (dr - st + 1);
if (st <= dr && arie > maxi)
maxi = arie;
dr++;
}
}
fout << maxi;
}
int main() {
citire();
rezolvare();
return 0;
}