Pagini recente » Cod sursa (job #2396002) | Cod sursa (job #2476163) | Cod sursa (job #1088632) | Cod sursa (job #1623758) | Cod sursa (job #1909502)
#include<fstream>
using namespace std;
ifstream fin("teren.in");
ofstream fout("teren.out");
char a[305][305];
int D[305][305], n, m, aria, x, sol, st, sum;
int main(){
fin >> n >> m >> x;
for( int i = 1; i <= n; i++ ){
for( int j = 1; j <= m; j++ ){
fin >> a[i][j];
}
}
//D[i][j] = cati de unu sunt pe colona j pana la linia i inclusiv
for( int i = 1; i <= n; i++ ){
for( int j = 1; j <= m; j++ ){
D[i][j] = D[i - 1][j] + (a[i][j] - '0');
}
}
for( int i1 = 1; i1 <= n; i1++ ){
for( int i2 = 1; i2 <= n; i2++ ){
st = 1;
sum = D[i2][1] - D[i1 - 1][1];
aria = (i2 - i1 + 1);
for( int j = 2; j <= m; j++ ){
if( sum + D[i2][j] - D[i1 - 1][j] <= x ){
sum += D[i2][j] - D[i1 - 1][j];
aria = (i2 - i1 + 1) * (j - st + 1);
}else{
while( sum + D[i2][j] - D[i1 - 1][j] > x && st < j ){
sum -= ( D[i2][st] - D[i1 - 1][st] );
st++;
}
sum += D[i2][j] - D[i1 - 1][j];
aria = (i2 - i1 + 1) * (j - st + 1);
}
sol = max( sol, aria );
}
sol = max( sol, aria );
}
}
fout << sol;
return 0;
}