Cod sursa(job #29225)

Utilizator skyelHighScore skyel Data 8 martie 2007 19:56:54
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include<math.h>
#include<fstream.h>
#define input "flip.in"
#define output "flip.out"

long r[20][20],s=0,lin[20],smax;
int n,m;

void pas2()
	{
	int i,j,sp=s,k;
	for(i=1;i<=n;i++)
		for(j=1;j<=m&&lin[i]==1;j++)
			{
			sp-=r[i][j];
			sp+=r[i][j]*(-1);
			}
	for(j=1;j<=m;j++)
		{
		k=0;
		for(i=1;i<=n;i++)
			k=(lin[i]==1)?k-r[i][j]:k+r[i][j];
		if(k<0)
			sp=sp-2*k;
		}
	if(sp>smax)
		smax=sp;
	}
void btk(int k)
	{
	if(k==n+1)
		pas2();
	else
		{
		lin[k]++;
		btk(k+1);
		lin[k]--;
		btk(k+1);
		}
	}

int main()
	{
	int i,j;
	ifstream fin(input);
	fin>>n;
	fin>>m;
	for(i=1;i<=n;i++)
		for(j=1;j<=m;j++)
			{
			fin>>r[i][j];
			s+=r[i][j];
			}
	smax=s;
	btk(1);
	fin.close();
	ofstream fout(output);
	fout<<smax;
	return 0;
	}