Cod sursa(job #561642)

Utilizator eudanipEugenie Daniel Posdarascu eudanip Data 20 martie 2011 22:29:00
Problema Balans Scor 25
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 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);
	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(i=l;i<=2*n;i++)
        for(j=c;j<=2*m;j++)
            for(k=l;k<=n && k<=i;k++)
                for(t=c;t<=m && t<=j;t++)
                {
                    s=a[i][j]-a[i][j-t]-a[i-k][j]+a[i-k][j-t];
                    sol=maxim(sol,s/((double)k*t));
                }
	printf("%.3lf\n",sol);
	return 0;
}