Pagini recente » Cod sursa (job #2121123) | Cod sursa (job #3133646) | Cod sursa (job #2511686) | Cod sursa (job #2928990) | Cod sursa (job #3232790)
#include <cstdio>
using namespace std;
int v[612][612];
int s[612][612];
int main() {
freopen("balans.in", "r", stdin);
freopen("balans.out", "w", stdout);
int n, m, r, c, i, j, tmp, C;
double max = -1, aux;
scanf("%d%d%d%d", &n, &m, &r, &c);
C = c;
for(i = 1; i <= n; ++i)
for(j = 1; j <= m; ++j) {
scanf("%d",v[i]+j);
v[i + n][j] = v[i][j];
v[i][j + m] = v[i][j];
v[i + n][j + m] = v[i][j];
}
n <<= 1;
m <<= 1;
for(i = 1; i <= n; ++i)
for(j = 1; j <= m; ++j)
s[i][j] = s[i - 1][j] + s[i][j - 1] - s[i - 1][j - 1] + v[i][j];
int N = n / 2;
int M = m / 2;
for(; r <= N; ++r)
for(c = C; c <= M; ++c)
for(i = N + 1; i <= n; ++i)
for(j = M + 1; j <= m; ++j) {
aux = s[i][j] - s[i - r][j] - s[i][j - c] + s[i - r][j - c];
if(aux > max * (r * c))
max = aux / (r * c);
}
printf("%.3f\n", max - 0.000499);
return 0;
}