Cod sursa(job #767208)

Utilizator Andrei.XweCobzaru Adrian-Andrei Andrei.Xwe Data 12 iulie 2012 22:59:46
Problema Jocul Flip Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include<fstream>
using namespace std;
ifstream fcin("flip.in");
ofstream fcout("flip.out");
int n,m,a[17][17],s[17],ma,sum,sol=-1;
void read()
{
	fcin>>n>>m;
	int i,j;
	for(i=1;i<=n;i++)
		for(j=1;j<=m;j++)
		{
			fcin>>a[i][j];
			a[i][0]+=a[i][j];
			sum+=a[i][j];
		}
	for(j=1;j<=m;j++)
		for(i=1;i<=n;i++)
			a[0][j]+=a[i][j];
}
void prel(int k)
{
	int x;
	if(k<=n)
	{
		x=sum;
		for(int i=1;i<=k;i++)
			x=x-2*a[s[i]][0];
		if(x>sol)
			sol=x;
	}
	if(k<=m)
	{
		x=sum;
		for(int i=1;i<=k;i++)
			x=x-2*a[0][s[i]];
		if(x>sol)
			sol=x;
	}
}
void back(int k)
{
	if(k>ma)
		return;
	for(int i=s[k-1]+1;i<=ma;i++)
	{
		s[k]=i;
		prel(k);
		back(k+1);
	}
}
int main()
{
	read();
	ma=n;
	if(m>ma)
		ma=m;
	back(1);
	fcout<<sol;
}