Pagini recente » Cod sursa (job #2177092) | Cod sursa (job #2823851) | Cod sursa (job #181522) | Cod sursa (job #408824) | Cod sursa (job #2530448)
#include <bits/stdc++.h>
using namespace std;
const int N = 305;
ifstream in("teren.in");
ofstream out("teren.out");
int n, m, k, max_area = 0;
int t[N][N];
int main() {
in >> n >> m >> k;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
int x;
in >> x;
t[i][j] = t[i - 1][j] + x;
}
}
for (int i = 1; i <= n; i++) { // set upp line
for (int j = i; j <= n; j++) { // set low line
int st = 1, dr = 1, s = 0;
while (st <= m && dr <= m) {
if (t[j][dr] - t[i - 1][dr] + s <= k) {
s += t[j][dr] - t[i - 1][dr];
max_area = max(max_area, (dr - st + 1) * (j - i + 1));
dr++;
}
else {
while(t[j][dr] - t[i - 1][dr] + s > k && st < dr) {
s -= t[j][st] - t[i - 1][st];
st++;
}
if (t[j][dr] - t[i - 1][dr] + s <= k) {
s += t[j][dr] - t[i - 1][dr];
max_area = max(max_area, (dr - st + 1) * (j - i + 1));
dr++;
}
else {
st++;
dr++;
}
}
}
}
}
out << max_area << "\n";
}