Pagini recente » Cod sursa (job #704675) | Cod sursa (job #739503) | Cod sursa (job #1164946) | Cod sursa (job #1987551) | Cod sursa (job #1724158)
#include <cstdio>
#define MAXN 150
long long s[2*MAXN][2*MAXN];
inline double max2(double a, double b){
if(a>b) return a;
else return b;
}
inline long long sum(int i, int j, int l, int c){
return s[l][c]-s[i-1][c]-s[l][j-1]+s[i-1][j-1];
}
int main(){
int nrlin, nrcol, a, b, i, j, l, c;
double ans=0;
FILE *fin, *fout;
fin=fopen("balans.in", "r");
fout=fopen("balans.out", "w");
fscanf(fin, "%d%d%d%d", &nrlin, &nrcol, &a, &b);
for(i=1; i<=nrlin; i++) for(j=1; j<=nrcol; j++) fscanf(fin, "%lld", &s[i][j]);
for(i=1; i<=nrlin; i++) for(j=1; j<=nrcol; j++) s[i+nrlin][j]=s[i+nrlin][j+nrcol]=s[i][j+nrcol]=s[i][j];
for(i=1; i<2*nrlin; i++) for(j=1; j<2*nrcol; j++) s[i][j]+=s[i-1][j]+s[i][j-1]-s[i-1][j-1];
for(l=a; l<=nrlin; l++) for(c=b; c<=nrcol; c++)
for(i=1; i<=nrlin; i++) for(j=1; j<=nrcol; j++)
ans=max2(ans, sum(i, j, i+l-1, j+c-1)/(double)(l*c));
fprintf(fout, "%.3lf\n", ans);
fclose(fin);
fclose(fout);
return 0;
}