Pagini recente » Cod sursa (job #3209534) | Cod sursa (job #736557) | Cod sursa (job #1923952) | Cod sursa (job #577996) | Cod sursa (job #548272)
Cod sursa(job #548272)
// http://infoarena.ro/problema/teren
// http://infoarena.ro/preoni-2008/runda-1/solutii
#include <fstream>
using namespace std;
#define maxSize 301
ifstream in("teren.in");
ofstream out("teren.out");
int rows,columns;
int maxBad,maxArea;
int best[maxSize][maxSize];
int main() {
in >> rows >> columns >> maxBad;
bool value;
for(int i=1;i<=rows;i++)
for(int k=1;k<=columns;k++) {
in >> value;
best[i][k] = best[i-1][k] + value;
}
for(int i=1;i<=rows;i++)
for(int k=i;k<=rows;k++) {
int left = 1;
int right = 0;
int sum = 0;
while(right < columns) {
sum += best[k][++right] - best[i-1][right];
while(sum > maxBad)
sum -= best[k][left] - best[i-1][left++];
if((k-i+1) * (right-left+1) > maxArea)
maxArea = (k-i+1) * (right-left+1);
}
}
out << maxArea << "\n";
in.close();
out.close();
return (0);
}