Cod sursa(job #786049)

Utilizator tudor0013tudor petrescu tudor0013 Data 10 septembrie 2012 13:55:51
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include<stdio.h>

int n,m,s,a[20][20],b[20][20],sol[25];

void prelucrare(int p)
{
	int i,j,sb=0,s1,s2;
	for(i=1;i<=n;i++)
		for(j=1;j<=m;j++)
			b[i][j]=a[i][j];
	for(j=1;j<=p;j++)
		//inmultesc cu -1 coloana sol[j] din b
		for(i=1 ; i<=n ; i++)
			b[i][sol[j]] = -b[i][sol[j]];
	for(i=1;i<=n;i++)
	{
		s1=0;
		s2=0;
		for(j=1;j<=m;j++)
		{
			s1=s1+b[i][j];
			s2=s2-b[i][j];
		}
		if(s1>s2)
			sb+=s1;
		else
			sb+=s2;
	}
	if(sb>s)
		s=sb;
}

void bkt (int p)
{
	prelucrare(p-1);
	for(int i=1+sol[p-1];i<=m;i++)
	{
		sol[p]=i;
		bkt(p+1);
	}
}

int main()
{
	int i,j;
	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]);
		}
	}
	bkt(1);
	printf("%d",s);
	return 0;
}