Cod sursa(job #287021)

Utilizator AnDrEwBoYA Andrei AnDrEwBoY Data 24 martie 2009 14:32:46
Problema Teren Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include<stdio.h>

int teren[301][301];
int sum[301][301];
int n,m,x;

int main()
{
    int i,j,s;
    int x1,y1,x2,y2,aM = 0;
    
    freopen("teren.in","r",stdin);
    freopen("teren.out","w",stdout);
     
    scanf("%d%d%d",&n,&m,&x);
    for(i = 0; i < n; i++)
      for(j = 0; j < m; j++)
        scanf("%d",(*(teren+i)+j));    
    
    for(x1 = 0; x1 < n; x1++)
      for(y1 = 0; y1 < m; y1++)
        for(i = 0; i <= x1; i++)
          for(j = 0; j <= y1; j++)
             sum[x1][y1] += teren[i][j];    //sume partiale
    
    for(x1 = 0; x1 < n; x1++)
     for(y1 = 0; y1 < m; y1++)
       for(x2 = x1; x2 < n; x2++)
         for(y2 = y1; y2 < m; y2++)
         {
             s = sum[x2][y2] - sum[x1-1][y2] - sum[x2][y1-1] + sum[x1-1][y1-1];
             if(s <= x && aM < (x2-x1+1)*(y2-y1+1)) 
               aM = (x2-x1+1)*(y2-y1+1);
         }
        
    printf("%d",aM);
    
    fclose(stdin); fclose(stdout);
    return 0;
}