Cod sursa(job #1088653)

Utilizator pulseOvidiu Giorgi pulse Data 20 ianuarie 2014 18:22:36
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <cstdio>

using namespace std;

#define NMAX 23

int a[NMAX][NMAX], sgn[NMAX], n, m, smax;

inline int Maxim (int x, int y)
{
	if (x > y) return x;
	else return y;
}

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

void Solve ()
{
	int sumt = 0;
	for (int j = 1; j <= m; ++j)
	{
		int sum = 0;
		for (int i = 1; i <= n; ++i)
			sum += a[i][j] * sgn[i];
		if (sum < 0) sum *= -1;
		sumt += sum;
	}
	smax = Maxim (smax, sumt);
}

void Back (int level)
{
	for (int i = -1; i <= 1; i += 2)
	{
		sgn[level] = i;
		if (level == n)
			Solve ();
		else
			Back (level + 1);
	}
}

int main ()
{
	freopen ("flip.in", "r", stdin);
	freopen ("flip.out", "w", stdout);
	ReadData ();
	Back (1);
	printf ("%d", smax);
}