Cod sursa(job #572303)

Utilizator gabriel93Robu Gabriel gabriel93 Data 5 aprilie 2011 10:44:17
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include<fstream>
using namespace std;
fstream f1,f2;
int a[18][18],b[18],i,j,n,m,r,x,q,smax,s,c[18][18];
int main()
{
int i1,j1;
f1.open("flip.in",ios::in);
f2.open("flip.out",ios::out);
f1>>n>>m;
for(i=1;i<=n;i++)
	for(j=1;j<=m;j++)
	{
		f1>>a[i][j];
		c[i][j]=a[i][j];
		smax=smax+a[i][j];
	}
q=(1<<n)-1;//2^n-1
for(i=0;i<=q;i++)
{
	x=i;
	for(j=1;j<=n;j++)
	{
		r=x%2;
		b[j]=r;
		x=x/2;
	}
	for(x=1;x<=n;x++)
	{
		if(b[x]%2==1)
		{
			for(j=1;j<=m;j++)
				a[x][j]=a[x][j]*(-1);
		}
	}
	for(j1=1;j1<=m;j1++)
	{
		s=0;
		for(i1=1;i1<=n;i1++)
			s=s+a[i1][j1];
		if(s<0)
			for(i1=1;i1<=n;i1++)
				a[i1][j1]=a[i1][j1]*(-1);
	}
	s=0;
	for(i1=1;i1<=n;i1++)
		for(j1=1;j1<=m;j1++)
			s=s+a[i1][j1];
	if(s>smax)
		smax=s;
	for(i1=1;i1<=n;i1++)
		for(j1=1;j1<=m;j1++)
			a[i1][j1]=c[i1][j1];
}
f2<<smax;
f1.close();
f2.close();
return 0;
}