Pagini recente » Cod sursa (job #1306675) | Cod sursa (job #1334832) | Cod sursa (job #645874) | Cod sursa (job #1808593) | Cod sursa (job #788874)
Cod sursa(job #788874)
#include <fstream>
#include <cstdio>
#include <iomanip>
#define NM 310
using namespace std;
int N,M,i,j,R,C,k,l;
int A[NM][NM];
double ANS=0,CANS;
void Read ()
{
freopen("balans.in","r",stdin);
scanf("%d %d %d %d",&N,&M,&R,&C);
R=max(R,1);
C=max(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];
A[i][j+M]=A[i][j];
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-1][j]+A[i][j-1]-A[i-1][j-1];
}
void Solve ()
{
for (k=R; k<=N; k++)
for (l=C; l<=M; l++)
for (i=N+1; i<=2*N; i++)
for (j=M+1; j<=2*M; j++)
{
CANS=(A[i][j]-A[i-k][j]-A[i][j-l]+A[i-k][j-l]);
if (CANS>ANS*k*l)
ANS=1.0*CANS/(k*l);
}
}
void Print ()
{
freopen("balans.out","w",stdout);
printf("%.3lf",(int(ANS*1000))/1000.0);
}
int main ()
{
Read();
Solve();
Print();
return 0;
}