Pagini recente » Cod sursa (job #2624638) | Cod sursa (job #888441) | Cod sursa (job #2062025) | Cod sursa (job #441920) | Cod sursa (job #1232041)
#include <cstdio>
using namespace std;
const int N = 305;
int m, n, a[N][N], sp[N][N], p, q, i, j, r, b;
double sol;
#define max(x,y) ((x)>(y)?(x):(y))
int main() {
freopen ("balans.in", "r", stdin);
freopen ("balans.out", "w", stdout);
scanf ("%d %d %d %d", &m, &n, &p, &q);
for (i = 1; i <= m; ++i)
for (j = 1; j <= n; ++j) {
scanf ("%d", &a[i][j]);
a[m + i][j] = a[i][j + n] = a[i + m][j + n] = a[i][j];
}
for (i = 1; i <= m * 2; ++i)
for (j = 1; j <= n * 2; ++j)
sp[i][j] = sp[i][j-1] + sp[i-1][j] - sp[i-1][j-1] + a[i][j];
for (i = m; i <= m * 2; ++i)
for (j = n; j <= n * 2; ++j)
for (r = p; r <= m; ++r)
for (b = q; b <= n; ++b)
sol = max(sol, 1.0 * (sp[i][j] + sp[i-r][j-b] - sp[i][j-b] - sp[i-r][j]) / (r * b));
printf ("%.3f", sol);
}