Mai intai trebuie sa te autentifici.

Cod sursa(job #328897)

Utilizator SprzlAbcdefg Sprzl Data 3 iulie 2009 18:24:39
Problema Jocul Flip Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <stdio.h>
#include <math.h>

void init();
void back();
bool exista();
bool solutie();
void prelucreaza(int b[16][16]);

int m,n,k,i,j,s,t;
int a[16][16];
int st[16];
int r[16];

int main()
{
	freopen("flip.in","r",stdin);
	freopen("flip.out","w",stdout);
	
	scanf("%d %d",&n,&m);

	for (i = 0;i<n;i++)
	{
		for (j = 0;j<m;j++)
		{
			scanf("%d",&a[i][j]);
		}
	}
	
	s = -sizeof(int);

	back();
	printf("%d",s);
}

void back()
{
	k = 1;
	init();
	while (k>0)
	{
		if (exista())
		{
			if (solutie())
			{
				prelucreaza(a);
			}
			else
			{
				k++;
				init();
			}
		}
		else
		{
			k--;
		}

	}
}

void init()
{
	st[k-1]  = 3;
}

bool exista()
{
	if ((k<=n) && (st[k-1]>-1))
	{
		st[k-1]-=2;
		return true;
	}
	return false;
}

bool solutie()
{
	return (k == n);
}

void prelucreaza(int b[16][16])
{
	t = 0;
	for (i=0;i<m;i++)
	{
		r[i] = 0;
	}
	

	for (i=0;i<n;i++)
	{
		for (j=0;j<m;j++)
		{
			b[i][j] *= st[i];
			r[j] +=b[i][j];
		}
	}
	
	for (i=0;i<m;i++)
	{
		t+=fabs((double)r[i]);
	}

	if (t>s)
	{
		s = t;
	}
}