Cod sursa(job #812228)

Utilizator dragos_musanMusan Dragos dragos_musan Data 13 noiembrie 2012 17:48:57
Problema Jocul Flip Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 kb
#include<fstream>

using namespace std;

int main(){
	
	ifstream f("flip.in");
	ofstream g("flip.out");
	int m,n,i,j;
	int v[17][17]={0};
	int p[17][17]={0};
	int ln[17]={0};
	int col[17]={0};
	f>>n>>m;
	for(i=1;i<=n;i++)
		for(j=1;j<=m;j++)
		{
			f>>v[i][j];
			p[i][j]=v[i][j];
		}
	int p1=1;
	int p2=1;
	int sum=0;
	int sum2=0;
	for(i=1;i<=n;i++)
		p1=p1*2;
	for(i=1;i<=m;i++)
		p2=p2*2;
	int k,kk;
	for(i=1;i<=p1;i++){
		
		for(k=1;k<=n;k++)
			if (ln[k]==1)
				for (kk=1;kk<=m;kk++)
					v[k][kk]=-v[k][kk];
				
		for (j=1;j<=p2;j++){
			
			for (k=1;k<=m;k++)
				if (col[k]==1)
					for (kk=1;kk<=n;kk++)
						v[kk][k]=-v[kk][k];
					
			sum2=0;
			
			for(int ii=1;ii<=n;ii++)
				for(int jj=1;jj<=m;jj++)
					sum2=sum2+v[ii][jj];
				
			if (sum2>sum) sum=sum2;
			
			
			for (k=1;k<=m;k++)
				if (col[k]==1)
					for (kk=1;kk<=n;kk++)
						v[kk][k]=-v[kk][k];
			
			j=1;
			col[j]++;
			while((col[j]>1)&&(col[j]<n)){
			col[j]=0;
			j=j+1;
			col[j]++;
		}
		}
		for(k=1;k<=n;k++)
				if (ln[k]==1)
					for (kk=1;kk<=m;kk++)
						v[k][kk]=-v[k][kk];
		j=1;
		ln[j]++;
		while((ln[j]>1)&&(col[j]<n)){
			ln[j]=0;
			j=j+1;
			ln[j]++;
		}
	}
	g<<sum;
	return 0;
}