Cod sursa(job #111565)

Utilizator raduzerRadu Zernoveanu raduzer Data 30 noiembrie 2007 17:43:55
Problema Teren Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <stdio.h>

int a[301][301],b[301][301],c[301],n,max,p,q,s,x,m;

int main()
{
	freopen("teren.in","r",stdin);
	freopen("teren.out","w",stdout);
	scanf("%d%d%d",&n,&m,&x);
	int i,j,k;
	for (i=1; i<=n; ++i)
	{
		for (j=1; j<=m; ++j)
		{
			scanf("%d",&a[i][j]);
			if (i>1) b[i][j]=b[i-1][j]+a[i][j];
			else b[i][j]=a[i][j];
		}
	}
	for (i=1; i<=n; ++i)
	{
		for (j=i; j<=n; ++j)
		{
			for (k=1; k<=m; ++k)
			{
				c[k]=b[j][k]-b[i-1][k];
			}
			s=c[1];
			p=1;
			for (q=2; q<=m; ++q)
			{
				s+=c[q];
				while (s>x)
				{
					s-=c[p];
					++p;
				}
				if ((j-i+1)*(q-p+1)>max) max=(j-i+1)*(q-p+1);
			}
		}
	}
	printf("%d",max);
	return 0;
}