Cod sursa(job #547619)

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

const int MAX_N = 152;

int n, m, r, c, ii, jj, sum;
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 <= 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];
		}

	ii = jj = 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 * ii * jj)
					{
						sol = sum;
						ii = i;
						jj = j;
					}
				}

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