Pagini recente » Cod sursa (job #708732) | Cod sursa (job #2637639) | Cod sursa (job #160467) | Cod sursa (job #920754) | Cod sursa (job #2453022)
#include <cstdio>
#include <fstream>
#include <iomanip>
using namespace std;
ofstream g("balans.out");
const int NMAX = 151;
int N, M, L, C, A[NMAX][NMAX];
int ansa, ansb;
long double ans;
static inline int Sum (int x1, int y1, int x2, int y2)
{
return A[x2][y2] - A[x2][y1 - 1] - (A[x1 - 1][y2] - A[x1 - 1][y1 - 1]);
}
int main ()
{
freopen("balans.in", "r", stdin);
scanf("%d%d%d%d", &N, &M, &L, &C);
for(int i = 1; i <= N; ++i)
for(int j = 1; j <= M; ++j)
scanf("%d", &A[i][j]);
for(int i = 1; i < N; ++i)
for(int j = 1; j < M; ++j)
A[i][j + M] = A[i + N][j] = A[i + N][j + M] = A[i][j];
for(int i = 1; i < 2 * N; ++i)
for(int j = 1; j < 2 * M; ++j)
A[i][j] += A[i - 1][j] + A[i][j - 1] - A[i - 1][j - 1];
for(int l = L; l <= N; ++l)
for(int c = C; c <= M; ++c)
for(int l1 = 1, l2 = l; l1 <= N; ++l1, ++l2)
for(int c1 = 1, c2 = c; c1 <= M; ++c1, ++c2)
{
int Numa = Sum(l1, c1, l2, c2);
int Numb = l * c;
if(1LL * Numa * ansb >= 1LL * Numb * ansa)
{
ansa = Numa;
ansb = Numb;
}
}
ans = (long double)(((long double)ansa) / ((long double)ansb));
g << setprecision(3) << fixed << ans << '\n';
return 0;
}