Pagini recente » Cod sursa (job #83920) | Cod sursa (job #1446379) | Cod sursa (job #481125) | Cod sursa (job #429734) | Cod sursa (job #183447)
Cod sursa(job #183447)
#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;
sf=0;
for (l=1;l<=m;++l)
{
z[++z[0]]=y[l][j]-y[l][i-1];
if (!sf&&z[l]<=k)
{
sf=l;
s=z[l];
}
}
a=0;
b=-1;
in=sf;
/* sf=1;
in=1;
while (z[sf]>k&&sf<=m)
sf++;
in=sf;
s=z[sf]; */
while (in<=m)
{
while (s+z[sf+1]<=k&&sf<m)
{
sf++;
s+=z[sf];
}
if (sf-in>b-a)
{
a=in;
b=sf;
}
if (in==sf)
s+=z[++sf];
s-=z[in++];
}
if ((j-i+1)*(b-a+1)>w)
w=(j-i+1)*(b-a+1);
}
printf("%d\n",w);
return 0;
}