Cod sursa(job #365260)

Utilizator AndreiDDiaconeasa Andrei AndreiD Data 18 noiembrie 2009 11:54:43
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <cstdio>
#include <cstring>

#define file_in "flip.in"
#define file_out "flip.out"

int n,m,a[17][17],smax;

inline int max(int a, int b) { return a>b?a:b; }

void back(int k)
{
	if (k>n)
	{
		int s=0,nr;
		for (int j=1;j<=m;++j)
		{
			nr=0;
			for (int i=1;i<=n;++i)
				  nr+=a[i][j];
		    s+=max(nr,-nr);
		}
		smax=max(smax,s);
	}
	else
	{
		back(k+1);
		for (int j=1;j<=m;++j)
		      a[k][j]*=(-1);
		back(k+1);
    	for (int j=1;j<=m;++j)
		      a[k][j]*=(-1);
	}
}

int main()
{
	freopen(file_in,"r",stdin);
	freopen(file_out,"w",stdout);
	
	scanf("%d %d", &n, &m);
	for (int i=1;i<=n;++i)
		 for(int j=1;j<=m;++j)
			  scanf("%d", &a[i][j]);
		 
	smax=-0x3f3f3f3f;

    back(1);	
	
	printf("%d ", smax);
	
	fclose(stdin);
	fclose(stdout);
	
	return 0;
	
}