Cod sursa(job #287025)

Utilizator AnDrEwBoYA Andrei AnDrEwBoY Data 24 martie 2009 14:38:27
Problema Teren Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 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;
}