Cod sursa(job #628596)

Utilizator RampageSergiu Caraian Rampage Data 1 noiembrie 2011 18:12:48
Problema Jocul Flip Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <fstream>
using namespace std;

ifstream f ("flip.in");
ofstream g ("flip.out");

int a[17][17], v[34], n, m, Sum=0;

void aplicare()
{
	int i;
	for (i=1; i<=n; ++i)
	{
		if (v[i]==1)
		{
			for (int j=1; j<=m; ++j)
				a[i][j]*=-1;
		}
	}
	for (i=n+1; i<=n+m; ++i)
	{
		if (v[i]==1)
		{
			for (int j=1; j<=n; ++j)
				a[j][i]*=-1;
		}
	}
}	


void bk (int k)
{
	if (k==n+m+1)
	{
		int S=0;
		aplicare();
		for (int i=1; i<=n; ++i)
			for (int j=1; j<=m; ++j)
				S+=a[i][j];
		aplicare();
		if (Sum<S)
			Sum=S;
	}
	else
	{
		for (int i=0; i<=1; ++i)
		{
			v[k]=i;
			bk(k+1);
		}
	}
}

int main ()
{
	f>>n>>m;
	
	for (int i=1; i<=n; ++i)
		for (int j=1; j<=m; ++j)
			f>>a[i][j];

	bk(1);
	
	g<<Sum;
	g.close();
	return 0;
}