Cod sursa(job #306670)

Utilizator pcinfoCarmen Popescu pcinfo Data 21 aprilie 2009 19:35:40
Problema Jocul Flip Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <fstream>

using namespace std;

int main()
{
	int m,n,a[20][20],i,j,sum,max,lim,s1,l,v;
	ifstream f("flip.in");
	ofstream g("flip.out");

	
	max=0;
	
	f>>m>>n;
	for (i=0;i<m;i++)
		for (j=0;j<n;j++) {
			f>>a[i][j];
			max+=a[i][j];
		}
		
	lim=(1<<n)-1;  // cate o cifra binara pt. fiecare coloana
	
	for (l=1;l<lim;l++)	  // tate variantele de a stinge/aprinde coloanele matricei
	{		
		v=l;
		for (j=0;j<n && v>0;j++) {  
            if (v%2==1) {
				for (i=0;i<m;i++)
					a[i][j]=-a[i][j];
			}
			v=v>>1;
		}
		
		sum=0;
		for (i=0;i<m;i++)
		{
			s1=0;
			for (j=0;j<n;j++)
				s1=s1+a[i][j];
			if (s1<0) 
				sum=sum-s1;
			else
				sum=sum+s1;
		}
		if (sum>max) 
			max=sum;
		
		v=l;
		for (j=0;j<n && v>0;j++) {  
            if (v%2==1) {
				for (i=0;i<m;i++)
					a[i][j]=-a[i][j];
			}
			v=v>>1;
		}
	}

	g<<max;
	
	f.close();
	g.close();
	return 0;
}