Cod sursa(job #448233)

Utilizator ChallengeMurtaza Alexandru Challenge Data 3 mai 2010 12:00:21
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <fstream>

using namespace std;

const char InFile[]="flip.in";
const char OutFile[]="flip.out";
const int MaxN=18;
const int MaxM=18;

ifstream fin(InFile);
ofstream fout(OutFile);
int maxs,m,n,mat[MaxN][MaxM];

int absi(int a)
{
	if(a<0)return -a;
	return a;
}

void switch_line(int line)
{
	for(register int i=1;i<=m;++i)
	{
		mat[line][i]*=-1;
	}
}

void check()
{
	int msum=0;
	for(register int i=1;i<=m;++i)
	{
		int sum=0;
		for(register int j=1;j<=n;++j)
		{
			sum+=mat[j][i];
		}
		msum+=abs(sum);
	}
	if(msum>maxs)
	{
		maxs=msum;
	}
}

void back(int k)
{
	if(k>n)
	{
		check();
	}
	else
	{
		back(k+1);
		switch_line(k);
		back(k+1);
	}
}

int main()
{
	fin>>n>>m;
	for(register int i=1;i<=n;++i)
	{
		for(register int j=1;j<=m;++j)
		{
			fin>>mat[i][j];
		}
	}
	fin.close();
	
	back(1);
	
	fout<<maxs;
	fout.close();
	return 0;
}