Cod sursa(job #931315)

Utilizator rudarelLup Ionut rudarel Data 28 martie 2013 10:09:02
Problema Balans Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include<stdio.h>
 
#define maxim(a,b) (a>b ? a : b)
 
int n,m,l,c,a[305][305];
double sol;
 
int main ()
{
    int i,j,k,t;
    double s;
     
    freopen("balans.in","r",stdin);
    freopen("balans.out","w",stdout);
    scanf("%d%d%d%d",&n,&m,&l,&c);
    if(!l) l=1;
    if(!c) c=1;
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
        {
            scanf("%d",&a[i][j]);
            a[i+n][j]=a[i][j+m]=a[i+n][j+m]=a[i][j];
        }
    for(i=1;i<=2*n;i++)
        for(j=1;j<=2*m;j++)
            a[i][j]=a[i][j]+a[i-1][j]+a[i][j-1]-a[i-1][j-1];
 
    for(k=l;k<=n;k++)
        for(t=c;t<=m;t++)
            for(i=n+1;i<=2*n;i++)
                for(j=m+1;j<=2*m;j++)
                {
                    s=a[i][j]-a[i][j-t]-a[i-k][j]+a[i-k][j-t];
                    if(s>sol*k*t)
                        sol=s/((double)k*t);
                }
    sol=(int)(sol*1000)/1000.0;
    printf("%.3lf\n",sol);
    return 0;
}