Pagini recente » Cod sursa (job #1990978) | Cod sursa (job #3173028) | Cod sursa (job #474388) | Cod sursa (job #2899127) | Cod sursa (job #630305)
Cod sursa(job #630305)
#include <fstream>
#include <iomanip>
using namespace std;
const int SIZE = 301;
const double eps = 1e-10;
int N, M, R, C;
int A[SIZE][SIZE], S[SIZE][SIZE];
double result;
int main()
{
ifstream fin("balans.in");
ofstream fout("balans.out");
fin >> N >> M >> R >> C;
for (int i = 1; i <= N; ++i)
{
for (int j = 1; j <= M; ++j)
fin >> A[i][j];
for (int j = M + 1; j <= 2 * M - 2; ++j)
A[i][j] = A[i][j - M];
}
for (int i = N + 1; i <= 2 * N - 2; ++i)
for (int j = 1; j <= 2 * M - 2; ++j)
A[i][j] = A[i - N][j];
for (int i = 1; i <= N * 2 - 2; ++i)
for (int j = 1; j <= M * 2 - 2; ++j)
S[i][j] = S[i - 1][j] + S[i][j - 1] - S[i - 1][j - 1] + A[i][j];
for (int in = R; in <= N; ++in)
for (int jn = C; jn <= M; ++jn)
for (int i = in; i <= N * 2 - 2; ++i)
for (int j = jn; j <= M * 2 - 2; ++j)
if (result * in * jn - 1.0 * (S[i][j] - S[i][j - jn] - S[i - in][j] + S[i - in][j - jn]) < -eps)
result = 1.0 * (S[i][j] - S[i][j - jn] - S[i - in][j] + S[i - in][j - jn]) / (in * jn);
fout << fixed << setprecision(3) << result;
fin.close();
fout.close();
}