Pagini recente » Cod sursa (job #958343) | Cod sursa (job #240887) | Cod sursa (job #801084) | Cod sursa (job #2966902) | Cod sursa (job #462158)
Cod sursa(job #462158)
#include <cstdio>
#define file_in "balans.in"
#define file_out "balans.out"
#define nmax 300
int n,m,p,q;
int val;
int a[nmax][nmax];
int sum[nmax][nmax];
void citire()
{
int i,j;
freopen(file_in,"r",stdin);
freopen(file_out,"w",stdout);
scanf("%d %d %d %d", &n, &m, &p,&q);
//min=0x3f3f3f3f;
//max=0;
for (i=1;i<=n;++i)
for (j=1;j<=m;++j)
{
scanf("%d", &val);
//val*=1000;
a[i][j]=val;
a[i+n][j]=val;
a[i][j+m]=val;
a[i+n][j+m]=val;
// if (val>max) max=val;
// if (val>min) min=val;
}
}
void solve()
{
int i,j,k,l;
//suma partiale
for (i=1;i<=2*n;++i)
for (j=1;j<=2*m;++j)
sum[i][j]=a[i][j]+sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1];
double sol=-10000.0;
double suma;
for (i=p;i<=n;++i)
for (j=q;j<=m;++j)
for (k=n+1;k<=2*n;++k)
for (l=m+1;l<=2*m;++l)
{
suma=sum[k][l]-sum[k-i][l]-sum[k][l-j]+sum[k-i][l-j];
if (sol*(i*j)<suma)
sol=suma/(i*j);
}
printf("%.3f\n", sol);
}
int main()
{
citire();
solve();
fclose(stdin);
fclose(stdout);
return 0;
}