Cod sursa(job #269460)

Utilizator drag0s93Mandu Dragos drag0s93 Data 2 martie 2009 22:19:10
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include<stdio.h>

#define IN "flip.in","r",stdin
#define OUT "flip.out","w",stdout

int n,m,max=-20000;
int v[20][20],b[20];

void citire()
{
	freopen(IN);
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;++i)
		for(int j=1;j<=m;++j)
			scanf("%d",&v[i][j]);
}
void back(int k)
{
	if(k==n+1)
	{
		int sum=0,smax=0,t=1,i,j=1,msum=0;
	//	for(int i=1;i<=n;++i)
	//		printf("%d ",b[i]);
	//	printf("\n");
		for(i=1;i<=n && t<=m;++i)
		{
			for(;j<=t;++j)
			{
				//printf("%d * %d == ",v[i][j],b[i]);
				msum=msum+(v[i][j]*b[i]);
				//printf("%d ",sum);
			}
			--j;
			if(i==n)
			{
				
				if(msum<0)
					sum+=msum*-1;
				else sum+=msum;
				i=0;
				++t;
				++j;
				msum=0;
			}
		}
		printf("\n");
		if(sum>max)
			max=sum;
		return;
	}
	b[k]=1;
	back(k+1);
	b[k]=-1;
	back(k+1);
}
void afisare()
{
	freopen(OUT);
	printf("%d\n",max);
}
int main()
{
	citire();
	back(1);
	afisare();
	return 0;
}