Cod sursa(job #547601)

Utilizator raduzerRadu Zernoveanu raduzer Data 6 martie 2011 15:22:43
Problema Balans Scor 25
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <cstdio>

const int MAX_N = 152;

int n, m, r, c;
double sol;
int a[MAX_N * 2][MAX_N * 2];

int main()
{
	int i, j, k, l;
	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", &a[i][j]);
			a[i][j + m] = a[i + n][j] = a[i + n][j + m] = a[i][j];
		}

	for (i = 1; i <= 2 * n; ++i)
		for (j = 1; j <= 2 * m; ++j)
			a[i][j] += a[i][j - 1] + a[i - 1][j] - a[i - 1][j - 1];

	for (i = r; i <= n; ++i)
		for (j = c; j <= m; ++j)
			for (k = n + 1; k <= 2 * n; ++k)
				for (l = m + 1; l <= 2 * m; ++l)
				{
					double sum = a[k][l] - a[k - i][l] - a[k][l - j] + a[k - i][l - j];

					if (sol < sum / (i * j))
						sol = sum / (i * j);
				}

	printf("%.3lf\n", sol);
}