Cod sursa(job #222685)

Utilizator swift90Ionut Bogdanescu swift90 Data 24 noiembrie 2008 16:32:42
Problema Teren Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include<stdio.h>
int nr[310][310],s[310][310];
int main(){
	freopen("teren.in","r",stdin);
	freopen("teren.out","w",stdout);
	int n,m,i,j,max,maxim=-1,dr,st,ss,arie;
	scanf("%d%d%d",&n,&m,&max);
	for(i=1;i<=n;++i){
		for(j=1;j<=m;++j){
			scanf("%d",&nr[i][j]);
			s[i][j]=s[i-1][j]+nr[i][j];
		}
	}
	
	for(i=1;i<=n;++i){
		for(j=i;j<=n;++j){
			ss=0;
			st=1;
			for(dr=1;dr<=m;++dr){
				ss+=s[j][dr]-s[i-1][dr];
				while(st<=dr && ss>max){
					ss=ss-(s[j][st]-s[i-1][st]);
					++st;
				}
				arie=(dr-st+1)*(j-i+1);
				if(arie>maxim)
					maxim=arie;
			}
		}
	}
	printf("%d\n",maxim);
	fclose(stdin);
	fclose(stdout);
	return 0;
}