Cod sursa(job #147753)

Utilizator katakunaCazacu Alexandru katakuna Data 3 martie 2008 14:56:03
Problema Teren Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#include<stdio.h>
int max,max1,st,dr,ki,ok,s,ii,jj,n,m,x,i,j,a[301][301];

int main(){

FILE *f=fopen("teren.in","r");
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]);
   }
 }

fclose(f);




  for(i=1;i<=n;i++){

   for(j=1;j<=m;j++){
   a[0][j]=0;
   }

    for(ii=i;ii<=n;ii++){
    ki=0;
    ok=1;

      for(j=1;j<=m;j++){
      a[0][j]+=a[ii][j];

      }



    max1=0;
    s=0;
     //for(j=1;j<=m;j++){

      st=1;
      dr=0;


	while(dr<m){

	if(s>x){

	 if(max1<dr-st){
	 max1=dr-st;
	 }

	s-=a[0][st];
	st++;
	}

	else{
	dr++;
	s+=a[0][dr];
	}


	}



    if(s<=x&&max1<dr-st+1)max1=dr-st+1;
    // }


    s=max1*(ii-i+1);


     if(s>max)max=s;

      /*for(j=1;j<=m;j++){

      ki=0;
      ok=1;

	for(jj=j;jj<=m;jj++){
	ki+=a[0][jj];

	   if(ki>x&&ok){
	   s=(ii-i+1)*(jj-j+1-1);
	     if(s>max)max=s;
	   ok=0;
	   break;
	   }

	   if(jj==m&&ki<=x){
	   s=(ii-i+1)*(jj-j+1);
	     if(s>max)max=s;

	   }

	}

      }*/


    }


  }


FILE *g=fopen("teren.out","w");
fprintf(g,"%d",max);
fclose(g);

return 0;
}