Cod sursa(job #147760)

Utilizator katakunaCazacu Alexandru katakuna Data 3 martie 2008 15:17:44
Problema Teren Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 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;

      st=1;

    for(dr=1;dr<=m;dr++){
    s+=a[0][dr];

      while(st<=dr&&s>x){
      s-=a[0][st];
      st++;
      }


    if(st<=dr){

      if(max1<dr-st+1)max1=dr-st+1;


    }



    }



    /* 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;


    }


  }


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

return 0;
}