Cod sursa(job #670055)

Utilizator alexalghisiAlghisi Alessandro Paolo alexalghisi Data 28 ianuarie 2012 11:34:12
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <iostream>
#include <cstdio>
using namespace std;

int h[40][40],n,m;

void f(int x)
{
	for(int i=1;i<=m;i++)
	{
		if( ( (x>>(i-1)) & 1 ) == 1 )
		{
			for(int j=1;j<=n;j++)
			h[j][i]*=-1;
			
		}
	}
	
	
}

void line(int l)
{
	for(int i=1;i<=m;i++)
		h[l][i]*=-1;
	
}

int s(int l)
{
	int S=0;
	for(int i=1;i<=m;i++)
		S+=h[l][i];
	return S;
}
int main()
{
	int SUMA=0;;
	freopen("flip.in","r", stdin);
	freopen("flip.out","w", stdout);
	scanf("%d %d",&n,&m);
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
			scanf("%d",&h[i][j]);
		
	for(int i=0;i<(1<<m);i++)
	{
		f(i);
		int suma=0,a,b;
		for(int j=1;j<=n;j++)
		{
			a=s(j);
			line(j);
			b=s(j);
			line(j);
			suma+=max(a,b);
		}
		SUMA=max(SUMA,suma);
		f(i);
	}
	printf("%d",SUMA);	
	return 0;
}