Pagini recente » Cod sursa (job #3323031) | Cod sursa (job #1785824) | Cod sursa (job #2789171) | Borderou de evaluare (job #2583212) | Cod sursa (job #3315389)
#include <fstream>
#include <queue>
#include <algorithm>
using namespace std;
ifstream cin("teren.in");
ofstream cout("teren.out");
const int NMAX = 300;
int n, m, k, answer;
bool a[NMAX + 1][NMAX + 1];
int sp[NMAX + 1][NMAX + 1];
int v[NMAX + 1];
int main() {
cin >> n >> m >> k;
for(int i = 1; i <= n; i++) {
for(int j = 1; j <= m; j++) {
cin >> a[i][j];
}
}
for(int i = 1; i <= n; i++) {
for(int j = 1; j <= m; j++) {
sp[i][j] = sp[i - 1][j] + a[i][j];
}
}
for(int i1 = 1; i1 <= n; i1++) {
for(int i2 = i1; i2 <= n; i2++) {
for(int j = 1; j <= m; j++) {
v[j] = sp[i2][j] - sp[i1 - 1][j];
}
int l = 1, sum = 0;
for(int j = 1; j <= m; j++) {
sum += v[j];
while(sum > k) {
sum -= v[l];
l++;
}
answer = max(answer, (i2 - i1 + 1) * (j - l + 1));
}
}
}
cout << answer << '\n';
return 0;
}