Cod sursa(job #447227)

Utilizator andrei.sfrentSfrent Andrei andrei.sfrent Data 28 aprilie 2010 01:22:56
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <stdio.h>

#define N 16
#define INF 1000000000

int n, m, smax = -INF;
int a[N + 1][N + 1];
int c[N + 1];

void citeste()
{
	scanf("%d%d", &n, &m);
	int i, j;
	for(i = 1; i <= n; ++i)
		for(j = 1; j <= m; ++j)
			scanf("%d", &a[i][j]);
	for(i = 1; i <= n; ++i)
		for(j = 1; j <= m; ++j)
			c[j] += a[i][j];
}

void scrie()
{
	printf("%d\n", smax);
}

int abs(int x)
{
	if(x < 0) return -x;
	return x;
}

void back(int k)
{
	if(k == n + 1)
	{
		int s, i;
		for(s = 0, i = 1; i <= m; ++i) s += abs(c[i]);
		if(s > smax) smax = s;
	}
	else
	{
		int i;
		
		back(k + 1);

		for(i = 1; i <= m; ++i) c[i] = c[i] - 2 * a[k][i];
		back(k + 1);
		for(i = 1; i <= m; ++i) c[i] = c[i] + 2 * a[k][i];
	}
}

int main()
{
	freopen("flip.in", "r", stdin);
	freopen("flip.out", "w", stdout);
	
	citeste();
	back(1);
	scrie();

	return 0;
}