Cod sursa(job #281596)

Utilizator pykhNeagoe Alexandru pykh Data 15 martie 2009 14:29:12
Problema Jocul Flip Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include<fstream.h>
#define F(i,a,b) for(i=(a);i<=(b);i++)
ifstream fin("flip.in");
ofstream fout("flip.out");

long long n,m,a[18][18],b[18][18],c[18][18],v[18],max=0;

void citire()
	{
	int i,j;
	fin>>n>>m;
	F(i,1,n)
	F(j,1,m)
		{
		fin>>c[i][j];
		b[i][j]=c[i][j];
		}
	}

void maxim()
	{
	int i,j,s1=0,s,w;
	F(i,1,n)
	F(j,1,m)
	a[i][j]=c[i][j];
	F(i,1,m)
		if(v[i]==2)
			F(j,1,n)
				a[j][i]*=-1;
	F(i,1,n)
	for(j=1,s=0;j<=m;j++)
	{
	s+=a[i][j];
	if((j==m)&&(s<0))
		F(w,1,m)
		a[i][w]*=-1;
	}
	F(i,1,n)
	F(j,1,m)
		s1+=a[i][j];
		if(s>=max)
			{
			max=s;
			F(i,1,n)
			F(j,1,m)
				b[i][j]=a[i][j];
			}

	}

/*void mmm()
	{
	int i,j,s=0,w;
	F(i,1,n)

		}
	}*/
void back(int k)
	{
	int i;
	if (k==m+1)maxim();
	else F(i,1,2)
		{
		v[k]=i;
		back(k+1);
		}
	}


void afisare()
	{
	int i,j;
	max=0;
	F(i,1,n)
	F(j,1,m)
	max+=b[i][j];
	fout<<max;
	}

int main()
	{
	citire();
	//back(1);
	//mmm();
	back(1);
	//mmm();
	afisare();
	return 0;
	}