Cod sursa(job #503138)

Utilizator Adrian1997Radulescu Adrian Adrian1997 Data 21 noiembrie 2010 19:17:15
Problema Teren Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include<stdio.h>
FILE *f,*g;
int a[301][301],x,nr,i,j,l,c,nr1,max,t,n,m,st,dr;
int main(){
f=fopen("teren.in","r");
g=fopen("teren.out","w");
fscanf(f,"%d %d %d",&n,&m,&x);
for(i=1;i<=n;i++){
	for(j=1;j<=m;j++){
		fscanf(f,"%d",&a[i][j]);
		a[i][j]+=a[i][j-1];
	}
}
for(j=1;j<=m;j++){
	for(i=1;i<=n;i++){
		a[i][j]+=a[i-1][j];
	}
}
for(i=1;i<=n;i++){
	for(j=1;j<=n;j++){
		st=1;
		for(dr=st;dr<=m;dr++){
			nr1=a[j][dr]-a[i-1][dr]-a[j][st-1]+a[i-1][st-1];
			if(nr1>x){
				if((dr-st)*(j-i+1)>max){max=(dr-st)*(j-i+1);}
				dr--;
				st++;
			}
		}
		
		if(nr1<=x && (dr-st)*(j-i+1)>max){
			max=(dr-st)*(j-i+1);
		}
	}
}
fprintf(g,"%d",max);
fclose(f);
fclose(g);
return 0;}