Cod sursa(job #682579)

Utilizator GabyyGabriel Niculae Gabyy Data 19 februarie 2012 10:42:16
Problema Jocul Flip Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <iostream>
#include <fstream>

using namespace std;

int s,n,m;
long final,v[16][16],sol[2][16];

void suma()
{
	int i,j;
	s=0;
	for(i=0;i<n;i++)
		for(j=0;j<m;j++)
		{
			if(sol[0][i]==1 && sol[1][j]==1) s=s+ v[i][j];
			else if(sol[0][i]==1 || sol[1][j]==1) s=s+ v[i][j]*(-1);
			else s=s+v[i][j];
		}
	if(final<s) final=s;
	//cout<<s<<" ";
}
void back(int a, int b)
{
	if(a==n && b==m) suma();
	suma();
	if(a<n)
	{
		sol[0][a]=-1;
		while(sol[0][a]<1)
		{
			sol[0][a]++;
			if(b<m)
			{
				sol[1][b]=-1;
				while(sol[1][b]<1)
				{
					sol[1][b]++;
					back(a,b+1);
				}
			}
			back(a+1,b);
		}
	}
}

int main()
{
	int i,j;
	ifstream f("flip.in");
	ofstream g("flip.out");
	f>>n>>m;
	for(i=0;i<n;i++)
		for(j=0;j<m;j++)
			f>>v[i][j];
	f.close();
	
	back(0,0);
	
	g<<final;
	g.close();
	return 0;
}