Cod sursa(job #767675)

Utilizator Andrei.XweCobzaru Adrian-Andrei Andrei.Xwe Data 14 iulie 2012 12:37:19
Problema Jocul Flip Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 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=-10000,s2[17],as,as2;
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 prel2(int k)
{
	as2=as;
	for(int i=1;i<=k;i++)
		as2=as2-2*a[0][s2[i]];
	if(as2>sol)
		sol=as2;
}
void back_m(int k)
{
	if(k>m)
		return;
	for(int i=s2[k-1]+1;i<=m;i++)
	{
		s2[k]=i;
		prel2(k);
		back_m(k+1);
	}
}
void prel(int k)
{
	as=sum;
	for(int i=1;i<=k;i++)
		as=as-2*a[s[i]][0];
	back_m(1);
}
void back_n(int k)
{
	if(k>n)
		return;
	for(int i=s[k-1]+1;i<=n;i++)
	{
		s[k]=i;
		prel(k);
		back_n(k+1);
	}
}
int main()
{
	read();
	back_n(1);
	fcout<<sol;
}