Cod sursa(job #561702)

Utilizator eudanipEugenie Daniel Posdarascu eudanip Data 21 martie 2011 10:48:31
Problema Balans Scor 45
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 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];
                    s=s/((double)k*t);
                    if(s>sol)
                        sol=s;
                }
    sol=(int)(sol*1000)/1000.0;
	printf("%.3lf\n",sol);
	return 0;
}