Pagini recente » Cod sursa (job #733870) | Cod sursa (job #1777806) | Cod sursa (job #1895967) | Cod sursa (job #3125918) | Cod sursa (job #331428)
Cod sursa(job #331428)
#include <cstdio>
#define maxn 301
using namespace std;
int n, m, i, j, r, c;
int l1, l2, c1, c2;
double mx;
int v[maxn][maxn], s[maxn][maxn], col[maxn][maxn];
inline void better(int l1, int c1, int l2, int c2) {
int sum, nr;
sum = s[l2][c2] - s[l1 - 1][c2] - s[l2][c1 - 1] + s[l1 - 1][c1 - 1];
nr = (l2 - l1 + 1) * (c2 - c1 + 1);
if (1.0 * sum / (1.0 * nr) > mx) {
mx = (1.0 * sum / (1.0 * nr));
}
}
int main() {
freopen("balans.in", "r", stdin);
freopen("balans.out", "w", stdout);
scanf("%d%d%d%d", &n, &m, &r, &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 + m] = v[i + n][j + m] = v[i][j];
}
for (i = 1; i <= 2 * n; i++)
for (j = 1; j <= 2 * m; j++)
col[i][j] = col[i - 1][j] + v[i][j];
for (i = 1; i <= 2 * n; i++)
for (j = 1; j <= 2 * m; j++)
s[i][j] = s[i][j - 1] + col[i][j];
for (l1 = 1; l1 <= n; l1++)
for (l2 = l1 + r - 1; l2 <= l1 + n; l2++)
for (c1 = 1; c1 <= m; c1++)
for (c2 = c1 + c - 1; c2 <= c1 + m; c2++)
better(l1, c1, l2, c2);
printf("%.3f\n", mx);
return 0;
}