Cod sursa(job #26047)

Utilizator tudalexTudorica Constantin Alexandru tudalex Data 5 martie 2007 08:18:24
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <stdio.h>
int a[17][17],s[17];
int i,j,maxim,n,m;
inline int max(int a,int b) { if (a>b) return a; else return b;}
inline int abs(int x) { if (x<0) return -1*x; else return x;}
void verifica()
{
	int t,i,j,sn,sp,s_t=0;
	//Calculeaza in V sumele partiale
	for (j=1;j<=m;++j)
	{
		sn=0;sp=sn;
		for (i=1;i<=n;++i)
		{
		
			t=s[i]*a[i][j];
			if (t<0) sn+=-1*t; else sp+=t;
		}
		s_t+=abs(sn-sp);
	}
	if (maxim<s_t) maxim=s_t;
}
	
void back(int x)
{
	if (x<n)
	{
		s[x]=-1;
		back(x+1);
		s[x]=1;
		back(x+1);
	}
	else
	{
		s[x]=-1;
		verifica();
		s[x]=1;
		verifica();
	}
}
int main()
{
	freopen("flip.in","r",stdin);
	freopen("flip.out","w",stdout);
	scanf("%d %d",&n,&m);
	for (i=1;i<=n;++i)
		for (j=1;j<=m;++j) scanf("%d",&a[i][j]);
	back(1);
	printf("%d\n",maxim);
	return 0;
}