Cod sursa(job #418721)

Utilizator marian77ivan marian liviu marian77 Data 16 martie 2010 12:09:08
Problema Teren Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <stdio.h>
int nr,n,m,x,max,v[301][301],i,j,dr,st,ok;
int main() {
	FILE *f=fopen("teren.in","r");
	FILE *g=fopen("teren.out","w");
	fscanf(f,"%d%d%d",&n,&m,&x);
	ok=1;
	for(i=1;i<=n;i++)
		for(j=1;j<=m;j++){
			fscanf(f,"%d",&v[i][j]);
			if(v[i][j]==0)
				ok=0;
			v[i][j]=v[i][j]+v[i-1][j];
		}
	if(ok==1) {
		fprintf(g,"%d",x);
		return 0;
	}
	for(i=1;i<=n;i++)
		for(j=i;j<=n;j++) {
			st=1;
			dr=1;
			nr=0;
			for(dr=1;dr<=m&&st<=m;dr++)
				if(nr+v[j][dr]-v[i-1][dr]<=x)
					nr=nr+v[j][dr]-v[i-1][dr];
				else {
					if(max<(j-i+1)*(dr-st))
						max=(j-i+1)*(dr-st);
					st++;
					if(st<dr){
					dr--;}
					nr=0;
				}
		if((j-i+1)*(dr-st)>max)
			max=(j-i+1)*(dr-st);
		}
	fprintf(g,"%d",max-1);
	return 0;
}