Cod sursa(job #608994)

Utilizator alex_ovidiunituAlex Ovidiu Nitu alex_ovidiunitu Data 18 august 2011 22:59:11
Problema Teren Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include<iostream>
#include<fstream>
int a[301][301];
using namespace std;
int main(void)
{
	int i,j,m,n,x,max=-1;
	fstream f,g;
	f.open("teren.in",ios::in);
	g.open("teren.out",ios::out);
	f>>n>>m>>x;
	for (i=1;i<=n;i++)
		for (j=1;j<=m;j++)
			f>>a[i][j];
	for (i=2;i<=m;i++)
	{
		a[1][i]=a[1][i]+a[1][i-1];
		if (a[1][i]<=x && i>max)
			max=1*i;
	}
	for (i=2;i<=n;i++)
	{
		a[i][1]=a[i][1]+a[i-1][i];
		if (a[i][1]<=x && i>max)
			max=1*i;
	}
	for (i=2;i<=n;i++)
		for (j=2;j<=m;j++)
			a[i][j]=a[i][j]+a[i-1][j]+a[i][j-1]-a[i-1][j-1];
		
	int k=0,aux,s,k1;
	
	aux=m;
	m=n;
	n=aux;
	if (n>m)
		k=n;
	else
		k=m;
	
		for(k1=0;k1<=k-1;k1++)
			 for(i=m-k1;i<=m;i++)
				 for(j=n-k+k1;j<=n;j++)
					{
						s=a[i][j]-a[i-m+k1][j]-a[i][j-n+k-k1]+a[i-m+k1][j-n+k-k1];
						if (s<=x && (i-(i-m+k1))*(j-(j-n+k-k1))>max )
							
							
							
							
							
							max=(i-(i-m+k1))*(j-(j-n+k-k1));
				 }
	g<<max;
}