Cod sursa(job #1316343)

Utilizator RaduStefanFMI - Radu Stefan RaduStefan Data 13 ianuarie 2015 19:05:23
Problema Jocul Flip Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<fstream>
using namespace std;
int a[20][20],v[20],s2;
void bkt(int i,int s,int n,int m,int &max)
{
	int j,k,c;
	if(i<m)
	{
		v[i]=1;
		bkt(i+1,s+a[0][i],n,m,max);
		v[i]=-1;
		bkt(i+1,s-a[0][i],n,m,max);
	}
	if(i==m)
	{
		c=s;
		s+=a[0][i];
		v[i]=1;
		if(s>=max)max=s;
		s2=0;
		for(j=1;j<=n;j++)
		{
			s2=0;
			for(k=1;k<=m;k++)
				s2+=a[j][k]*v[k];
			if(s2<0)s+=-2*s2;
		}
		if(s>=max)max=s;
		s=c;
		s-=2*a[0][i];
		v[i]=-1;
		if(s>=max)max=s;
		s2=0;
		for(j=1;j<=n;j++)
		{
			s2=0;
			for(k=1;k<=m;k++)
				s2+=a[j][k]*v[k];
			if(s2<0)s+=-2*s2;
		}
		if(s>=max)max=s;
	}
}
int main()
{
	ifstream fcin("flip.in");
	ofstream fcout("flip.out");
	int n,m,i,j,max=0;
	fcin>>n>>m;
	for(i=1;i<=n;i++)
		for(j=1;j<=m;j++)
		{
			fcin>>a[i][j];
			a[0][j]+=a[i][j];
		}
	bkt(1,0,n,m,max);
	fcout<<max;
	return 0;
}