Pagini recente » Cod sursa (job #3274825) | Cod sursa (job #895696) | Cod sursa (job #1019383) | Cod sursa (job #2574532) | Cod sursa (job #2643398)
#include <cstdio>
#include <algorithm>
using namespace std;
const int NMAX = 150;
int a[NMAX + 5][NMAX + 5] , sp[NMAX + 5][NMAX + 5] , n , m;
int f(int i , int i1 , int j)
{
if(i1 > n)
return sp[n][j] - sp[i - 1][j] + sp[i1 - n][j];
return sp[i1][j] - sp[i - 1][j];
}
int main()
{
freopen("balans.in" , "r" , stdin);
freopen("balans.out" , "w" , stdout);
int i , j , i1 , j1 , s , s1 , r , c , x , xm , ym , xm1, ym1 , sm;
double maxim , aux;
scanf("%d%d%d%d" , &n , &m , &r , &c);
for(i = 1 ; i <= n ; i ++)
for(j = 0 ; j < m ; j ++)
{
scanf("%d" , &a[i][j]);
sp[i][j] = sp[i - 1][j] + a[i][j];
}
maxim = 0.0;
for(i = 1 ; i <= n ; i ++)
for(i1 = i + r - 1 ; i1 < i + n ; i1 ++)
{
x = i1 - i + 1;
for(j = 0 ; j < m ; j ++)
{
s = 0;
for(j1 = j ; j1 < j + c ; j1 ++)
s += f(i , i1 , j1 % m);
aux = (1.0 * s) / (1.0 * x * c);
maxim = max(maxim , aux);
s1 = s;
for(j1 = j + c ; j1 < j + m ; j1 ++)
{
s1 += f(i , i1 , j1 % m);
aux = (1.0 * s1) / (1.0 * x * (j1 - j + 1));
maxim = max(maxim , aux);
}
}
}
printf("%.3lf\n" , maxim);
return 0;
}