Pagini recente » Cod sursa (job #279951) | Cod sursa (job #279943) | Cod sursa (job #342353) | Cod sursa (job #1723391) | Cod sursa (job #183438)
Cod sursa(job #183438)
#include<stdio.h>
#define NMAX 311
int x[NMAX][NMAX],z[NMAX],y[NMAX][NMAX],i,j,n,m,k,l,a,s,b,q,w,in,sf;
int main()
{
freopen("teren.in","r",stdin);
freopen("teren.out","w",stdout);
scanf("%d%d%d",&n,&m,&k);
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
scanf("%d",&x[i][j]);
for (i=1;i<=m;i++)
for (j=1;j<=n;j++)
y[i][j]=y[i][j-1]+x[j][i];
for (i=1;i<=n;i++)
for (j=i;j<=n;j++)
{
z[0]=0;
/* for (l=1;l<=m;l++)
z[++z[0]]=y[l][j]-y[l][i-1]; */
a=0;
b=-1;
sf=1;
in=1;
while (/*z[sf]*/y[sf][j]-y[sf][i-1]>k&&sf<=m)
sf++;
in=sf;
s=y[sf][j]-y[sf][i-1]/*z[sf]*/;
while (in<=m)
{
while (s+y[sf+1][j]-y[sf+1][i-1]/*z[sf+1]*/<=k&&sf<m)
{
sf++;
s+=y[sf][j]-y[sf][i-1]/*z[sf]*/;
}
if (sf-in>b-a)
{
a=in;
b=sf;
}
if (in==sf)
{
sf++;
s+=y[sf][j]-y[sf][i-1]/*z[sf]*/;
}
s-=/*z[in++]*/y[in][l]-y[in][i-1];
in++;
}
if ((j-i+1)*(b-a+1)>w)
w=(j-i+1)*(b-a+1);
}
printf("%d\n",w);
return 0;
}