Cod sursa(job #350059)

Utilizator siminescuPaval Cristi Onisim siminescu Data 22 septembrie 2009 16:22:38
Problema Jocul Flip Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include<fstream>
using namespace std;
int a[17][17],lin[17],col[17],b[17][17];
int main()
{
	int smax=0,i,j,ii,jj,s,p,n,m;
	ifstream f("flip.in");
	ofstream g("flip.out");
	f>>n>>m;
	for(i=1;i<=n;i++)
		for(j=1;j<=m;j++)
		{
			f>>a[i][j];
		}
	for(i=1;i<=(1<<n);i++)
	{
		p=n;
		lin[p]++;
		while(lin[p]==2)
		{
			lin[p]=0;
			p--;
			lin[p]++;
		}
		for(j=1;j<=(1<<m);j++)
		{
			for(ii=1;ii<=n;ii++)
				for(jj=1;jj<=m;jj++)
					b[ii][jj]=a[ii][jj];
			p=m;
			col[p]++;
			while(col[p]==2)
			{
				col[p]=0;
				p--;
				col[p]++;
			}
			for(ii=1;ii<=n;ii++)
			{
				if(lin[ii]==1)
					for(jj=1;jj<=m;jj++)
						b[ii][jj]=-b[ii][jj];
			}
			for(jj=1;jj<=m;jj++)
			{
				if(col[jj]==1)
					for(ii=1;ii<=n;ii++)
						b[ii][jj]=-b[ii][jj];
			}
			s=0;
			for(ii=1;ii<=n;ii++)
				for(jj=1;jj<=m;jj++)
					s=s+b[ii][jj];
			if(s>smax)
				smax=s;
		}
	}

	g<<smax<<'\n';
	
	f.close();
	g.close();
	return 0;
}