Cod sursa(job #106110)

Utilizator hadesgamesTache Alexandru hadesgames Data 18 noiembrie 2007 12:37:16
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <stdio.h>
int d[30],b[20],c[20],a[30][30],n,m,max,g[30],h[30];
void back(int x)
{
	int i,j,nr;
	if (x==m+1)
	{
		for (i=1;i<=m;i++)
			h[i]=c[i];
		for (i=1;i<=n;i++)
			g[i]=b[i];
		for(i=1;i<=m;i++)
		{
			if (d[i]==-1)
				for (j=1;j<=n;j++)
					g[j]-=2*a[j][i];
			/*	
			for (j=1;j<=n;j++)
			{
				e[j][i]=a[j][i]*d[i];
				b[j]+=e[j][i];
				c[i]+=e[j][i];
			}*/
				
		}
		nr=0;
		for (i=1;i<=n;i++)
		{	
			if (g[i]<0)
				g[i]*=-1;
			nr+=g[i];
		}
		if (max<nr)
			max=nr;
				
	}
	else
	{
		d[x]=-1;
		back(x+1);
		d[x]=1;
		back(x+1);
	}
}
int main()
{
	FILE *in,*out;
	int i,j;
	in=fopen("flip.in","r");
	out=fopen("flip.out","w");
	fscanf(in,"%d%d",&n,&m);
	for (i=1;i<=n;i++)
		for (j=1;j<=m;j++)
		{
			fscanf(in,"%d",&a[i][j]);
			b[i]+=a[i][j];
			c[j]+=a[i][j];
		}
	max=-1;
	back(1);
	fprintf(out,"%d\n",max);
	fclose(in);
	fclose(out);
	return 0;
}