Cod sursa(job #123431)

Utilizator perticas_catalinperticas catalin perticas_catalin Data 15 ianuarie 2008 22:09:53
Problema Teren Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
//teren
#include<stdio.h>
FILE*fin=fopen("teren.in","r");
FILE*fout=fopen("teren.out","w");
int main()
{
  short a[301][301],s[301][301],g;
  int i,j,c,cf,n,m;
  long nmax=0,x,nx;
  fscanf(fin,"%d" "%d" "%ld",&n,&m,&x);
  for(i=1;i<=n;i++)
    for(j=1;j<=m;j++)
      fscanf(fin,"%d",&a[i][j]);
  fclose(fin);
  for(j=1;j<=m;j++)
  {
    s[0][j]=0;
    for(i=1;i<=n;i++)
      s[i][j]=s[i-1][j]+a[i][j];
  }
  for(i=1;i<=n;i++)
    for(j=i;j<=n;j++)
    {
      nx=s[j][1]-s[i-1][1];cf=1;
      for(c=1;c<=m;nx-=(s[j][c]-s[i-1][c]),c++)
      {
	g=0;
	while(nx<=x&&cf<m){g=1;cf++;nx+=(s[j][cf]-s[i-1][cf]);}
	if(g==1&&(cf-c)*(j-i+1)>nmax) nmax=(cf-c)*(j-i+1);
      }
    }
  fprintf(fout,"%ld",nmax);
  fclose(fout);
  return 0;
}