Cod sursa(job #359234)

Utilizator rala03Ana Roxana Pop rala03 Data 26 octombrie 2009 12:45:33
Problema Jocul Flip Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.4 kb
#include<stdio.h>
int n,m,suma,k=1,p,max=0;
int x[17];
int a[17][17];
void b();
void bkt(int);
int main()
{
	freopen ("flip.in","r",stdin);
	freopen("flip.out","w",stdout);
	scanf("%d%d",&m,&n);
	for(int i=1;i<=m;i++)
	{
		for(int j=1;j<=n;j++)
		{
			scanf("%d",&a[i][j]);
		}
	}
	bkt(1);
	printf("%d",max);
	return 0;
}
void bkt(int p)
{
	if(p==m)
	{
		b();
		return;
	}
	x[p]=1;
	bkt(p+1);
	x[p]=-1;
	bkt(p+1);
}
void b()
{
	for(int i=1;i<=m;i++)
	{
		if(x[i]==1){
			for(int j=1;j<=n;j++)
			{
				suma+=a[i][j];
			}
		}
		else
		{
			for(int j=1;j<=n;j++)
			{
				suma+=a[i][j]*-1;
			}
		}
	}
	if(suma>max)
		max=suma;
}
	/*if(p==k){
		if(suma>max)
			max=suma;
		return;
	}
	for(int i=1;i<=n+m;i++)
	{
		for(int j=-1;j<=1;j=1)
		{
			if(i<=n)
			{
				a[i][0]=j;
				bkt(p+1);
				a[i][0]-=j;
			}
			else
			{
				a[0][i-n]=j;
				bkt(p+1);
				a[0][i-n]-=j;
			}
		}
	}
}*/
	/*int s;
	for(int i=1;i<=n;i++)
	{
		s=0;
		for(int j=1;j<=m;j++)
		{
			s+=a[i][j];
		}
		if(s<0)
		{
			for(int j=1;j<=m;j++)
			{
				a[i][j]*=-1;
			}
		}
	}
	for(int i=1;i<=m;i++)
	{
		s=0;
		for(int j=1;j<=n;j++)
		{
			s+=a[j][i];
		}
		if(s<0)
		{
			for(int j=1;j<=n;j++)
			{
				a[j][i]*=-1;
			}
		}
	}
	//suma=0;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
			suma+=a[i][j];
	printf("%d",suma);
	return 0;
}
*/