Pagini recente » Cod sursa (job #2519294) | Cod sursa (job #395) | Cod sursa (job #1435257) | Cod sursa (job #1684283) | Cod sursa (job #1413949)
#include <fstream>
#include <deque>
#define MAXN 160
#define MAXVAL 100005
using namespace std;
int n, m, r, c, a[2 * MAXN][2 * MAXN], i1, i2, nr, Sp[2 * MAXN][2 * MAXN], S;
double sol;
int main(){
freopen("balans.in", "r", stdin);
freopen("balans.out", "w", stdout);
int i, j, difi, difj;
scanf("%d %d %d %d", &n, &m, &r, &c);
for(i = 1; i <= n; i++)
for(j = 1; j <= m; j++){
scanf("%d", &a[i][j]);
a[i + n][j] = a[i + n][j + m] = a[i][j + m] = a[i][j];
}
for(i = 1; i <= 2 * n; i++)
for(j = 1; j <= 2 * m; j++)
Sp[i][j] = Sp[i - 1][j] + Sp[i][j - 1] - Sp[i - 1][j - 1] + a[i][j];
for(difi = r; difi <= n; difi++)
for(difj = c; difj <= m; difj++){
nr = difi * difj;
for(i = 1; i <= n; i++)
for(j = 1; j <= m; j++){
S = Sp[i + difi - 1][j + difj - 1] + Sp[i - 1][j - 1] - Sp[i + difi - 1][j - 1] - Sp[i - 1][j + difj - 1];
if((double)S / nr > sol) sol = (double)S / nr;
}
}
printf("%.3lf\n", sol);
return 0;
}