Cod sursa(job #547634)

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

const int MAX_N = 152;

int n, m, r, c;
double sol, sum;
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 <= 2 * n; ++i)
		for (j = 1; j <= 2 * m; ++j)
		{
			if (i <= n && j <= m)
			{
				scanf("%d", &a[i][j]);
				a[i][j + m] = a[i + n][j] = a[i + n][j + m] = a[i][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 <= (n << 1); ++k)
				for (l = m + 1; l <= (m << 1); ++l)
				{
					sum = a[k][l] - a[k - i][l] - a[k][l - j] + a[k - i][l - j];

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

	printf("%.3lf\n", (int)(sol * 1000) / 1000.0);
}