Pagini recente » Cod sursa (job #2081662) | Cod sursa (job #810595) | Cod sursa (job #2660888) | Cod sursa (job #52555) | Cod sursa (job #300197)
Cod sursa(job #300197)
#include <stdio.h>
#include <stdlib.h>
int m, n;
void showmat(int c[100][100]) {
int i, j;
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) printf ("%d ", c[i][j]);
printf ("\n"); }
}
int main() {
int i, j, a[100][100], b[100][100], x,ok, count, max, cj, ci, li, lj, surf, s=0;
freopen ("teren.in", "r", stdin);
freopen ("teren.out", "w", stdout);
scanf ("%d %d %d", &m, &n, &x);
for (i = 0; i < m; i++)
for (j = 0; j < n; j++)
scanf ("%d", &a[i][j]);
for (j = 0; j < n; j++)
{ count = 0;
for (i = 0; i < m; i++)
{ if( a[i][j] == 1) count++;
b[i][j] = count; }
}
max = 0;
for (li = 0; li < m; li++)
for (lj = li; lj < m; lj++)
{
cj = 0; s=0; ci = 0; ok=0;
while(ci < n)
{
if (li>0) s = s + b[lj][ci] - b[li-1][ci];
else s = s + b[lj][ci];
if(s > x) { surf = (lj-li+1)*(ci-cj);
ok = 1;
if(surf > max) max = surf;
for (j = cj; j < ci; j++)
{ s = s - b[li][cj] + b[li-1][cj];
if (s < x) { cj = j;
break; }}
}
ci++;
if (ok == 0 && ci == n-1)
surf = (lj-li+1)*(ci-cj+1);
if (surf > max ) max = surf;
}
}
printf ("%d\n",max);
/*showmat (a);
printf ("\n");
showmat (b);*/
return 0;
}