Cod sursa(job #1307249)

Utilizator al.mocanuAlexandru Mocanu al.mocanu Data 1 ianuarie 2015 19:03:23
Problema Jocul Flip Scor 40
Compilator c Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <stdio.h>
#include <stdlib.h>

int main()
{
	freopen("flip.in", "r", stdin);
	freopen("flip.out", "w", stdout);
	long long i, k;
	int n, m, a[20], b[20], v[20][20], cv[20][20], s = 0, sum, cs, j;

	scanf("%d%d", &n, &m);
	for(i = 0; i < n; i++)
		for(j = 0; j < m; j++)
		{
			scanf("%d", &v[i][j]);
			s += v[i][j];
		}
		sum = s;

	for(i = 0; i < (1<<(m + n)); i++)
	{
		for(j = 0; j < n; j++)
			for(k = 0; k < m; k++)
				cv[j][k] = v[j][k];
		cs = s;
		k = i;
		for(j = 0; j < n; j++)
		{
			a[j] = k % 2;
			k >>= 1;
		}

		for(j = n; j < m + n; j++)
		{
			b[j - n] = k % 2;
			k >>= 1;
		}

		for(j = 0; j < n; j++)
			if(a[j] == 1)
				for(k = 0; k < m; k++)
				{
					cv[j][k] = -cv[j][k];
					cs += 2 * cv[j][k];
				}

		for(j = 0; j < m; j++)
			if(b[j] == 1)
				for(k = 0; k < n; k++)
				{
					cv[k][j] = -cv[k][j];
					cs += 2 * cv[k][j];
				}

		if(cs > sum)
			sum = cs;
	}

	printf("%d", sum);
	return 0;
}