Cod sursa(job #147830)

Utilizator alex3el_n2oAlex Vladescu alex3el_n2o Data 3 martie 2008 17:08:04
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <stdio.h>
FILE *f=fopen("flip.in","r"), *g=fopen("flip.out","w");
int i,j,n,m,lin[20],x[20][20],z;
long s,max=0;
void init(int k)
	{
	lin[k]=-1;
	}

int succesor(int k)
	{
	if (lin[k]<1)
		{
		lin[k]++;
		return 1;
		}
	else return 0;
	}

int solutie(int k)
	{
	return k==n+1;
	}

void use()
	{
	s=0;
	z=0;
	for (j=1;j<=m;j++)
		for (i=1;i<=n;i++)
			{
			if (lin[i]) {
				z+=x[i][j]*-1;
				}
			else {
				z+=x[i][j];
				}
			if (i==n)
				{
				if (z<0) z*=-1;
				s+=z;
				z=0;
				}
			}
	if (s>max) max=s;
	}

void back(int k)
	{
	if (solutie(k)) use();
		else
			{
			init(k);
			while (succesor(k))
				back(k+1);
			}
	}

int main()
{
fscanf(f,"%d %d",&n,&m);
for (i=1;i<=n;i++)
	for (j=1;j<=m;j++)
		fscanf(f,"%d",&x[i][j]);
back(1);
fprintf(g,"%ld\n",max);
fclose(g);
return 0;
}