Pagini recente » Cod sursa (job #1845533) | Cod sursa (job #1951916) | Cod sursa (job #2275400) | Cod sursa (job #2821047) | Cod sursa (job #1785234)
#include <cstdio>
#define MAXN 150
int sp[2*MAXN+1][2*MAXN+1];
inline int calc(int l1,int c1,int l2,int c2){
return sp[l2][c2]-sp[l1-1][c2]-sp[l2][c1-1]+sp[l1-1][c1-1];
}
int main(){
FILE*fi,*fout;
int i,j,n,m,r,c,lin,col;
double max;
fi=fopen("balans.in" ,"r");
fout=fopen("balans.out" ,"w");
fscanf(fi,"%d %d %d %d " ,&n,&m,&r,&c);
for(i=1;i<=n;i++)
for(j=1;j<=m;j++){
fscanf(fi,"%d " ,&sp[i][j]);
sp[i+n][j]=sp[i][j];
sp[i][j+m]=sp[i][j];
sp[i+n][j+m]=sp[i][j];
}
for(i=1;i<=2*n;i++)
for(j=1;j<=2*m;j++)
sp[i][j]+=sp[i-1][j]+sp[i][j-1]-sp[i-1][j-1];
max=0;
for(i=r;i<=n;i++)
for(j=c;j<=m;j++)
for(lin=i;lin-i+1<=n;lin++)
for(col=j;col-j+1<=m;col++)
if(calc(lin-i+1,col-j+1,lin,col)>max*i*j)
max=1.0*calc(lin-i+1,col-j+1,lin,col)/(i*j);
fprintf(fout,"%.3lf" ,(int)(max*1000)/1000.0);
fclose(fi);
fclose(fout);
return 0;
}