Pagini recente » Cod sursa (job #2793021) | Cod sursa (job #2196060) | Cod sursa (job #2864688) | Cod sursa (job #2870173) | Cod sursa (job #2643408)
#include <cstdio>
#include <algorithm>
using namespace std;
const int NMAX = 150;
long long a[NMAX + 5][NMAX + 5] , sp[NMAX + 5][NMAX + 5];
int n , m;
long long 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 , r , c , x;
long long s , s1;
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("%lld" , &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 + max(r , 1) - 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;
}