Cod sursa(job #1105518)

Utilizator L.DanielLungu Daniel L.Daniel Data 11 februarie 2014 20:50:32
Problema Jocul Flip Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <fstream>
using namespace std;
ifstream cin("flip.in");
ofstream cout("flip.out");
int n, m, x = -1000000, p, a[20][20], v[50];
void comutare(int k)
{
	int i, j;
	for (i = 1; i <= k; i++)
	if (v[i] <= n)
	{
		for (j = 1; j <= m; j++)
			a[v[i]][j] = -a[v[i]][j];
	}
	else
	{
		for (j = 1; j <= n; j++)
			a[j][v[i] - n] = -a[j][v[i] - n];
	}
}
void calcul(int k)
{
	int l = 0, i, j;
	comutare(k);
	for (i = 1; i <= n;i++)
	for (j = 1; j <= m; j++)
		l = l + a[i][j];
	if (l > x)x = l;
	comutare(k);
}
void BK(int k)
{
	for (int i = v[k - 1] + 1; i <= n + m; i++)
	{
		v[k] = i;
		if (k == p)calcul(k);
		else BK(k + 1);
	}
}
int main()
{
	int i, j;
	cin >> n >> m;
	for (i = 1; i <= n;i++)
	for (j = 1; j <= m; j++)
		cin >> a[i][j];
	for (p = 1; p <= n + m; p++)
		BK(1);
	cout << x;
	return 0;
}