Cod sursa(job #89094)

Utilizator alex_mircescuAlex Mircescu alex_mircescu Data 5 octombrie 2007 21:35:59
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include<math.h>
#include<stdio.h>

long n,m,i,j,k,a[25][25],dpn,v[25],ma[25][25],max,df,h,sum;

int binar(long aux)
{
	long ipr=0;
	h=0;
	for(ipr=1;ipr<=16;ipr++)
		v[ipr]=0;
	//memset(v,0,sizeof(v));
	while(aux!=0)
	{
		h++;
		v[h]=aux%2;
		aux=aux/2;
	}
	return 0;
}
	

int main()
{
	freopen("flip.in","r",stdin);
	freopen("flip.out","w",stdout);
	scanf("%ld%ld",&n,&m);
	for(i=1;i<=n;i++)
		for(j=1;j<=m;j++)
		{
			scanf("%ld",&a[i][j]);
			ma[i][j]=a[i][j];
		}
	dpn=1;
	for(i=1;i<=m;i++)
		dpn=dpn*2;
	for(i=1;i<dpn;i++)
	{
		df=0;
		binar(i);
		for(j=1;j<=m;j++)
			if(v[j]==1)
			{
				for(k=1;k<=n;k++)
					a[k][j]=a[k][j]*(-1);
			}
		for(j=1;j<=n;j++)
		{
			sum=0;
			for(k=1;k<=m;k++)
				sum=sum+a[j][k];
			if(sum<0)
				sum=sum-2*sum;
			df=df+sum;
		}
		if(max<df) max=df;
		for(j=1;j<=n;j++)
			for(k=1;k<=m;k++)
				a[j][k]=ma[j][k];
	}
	printf("%ld",max);
return 0;
}