Cod sursa(job #502214)

Utilizator matei_cChristescu Matei matei_c Data 18 noiembrie 2010 14:43:25
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include<stdio.h>
int n,m,a[17][17],b[17][17],max,val,k,p;


int calc_mat()
{
	int i,j,suma,total=0;
	for(j=1;j<=m;j++)
	{
		suma=0;
		
		for(i=1;i<=n;i++)
		{
			suma += b[i][j];
		}	
		if(suma<0)
			suma=-suma;
		total+=suma;
	}	
	return total;
}




int main()
{
	int i,j;
	freopen("flip.in","r",stdin);
	freopen("flip.out","w",stdout);
	scanf("%d%d",&n,&m);
/////citesc matr a si o copiez in matr b	
	for(i=1;i<=n;i++)
	{	
		for(j=1;j<=m;j++)
		{	
			scanf("%d",&a[i][j]);
			b[i][j]=a[i][j];
		
		}
	}	
/////
	int val = calc_mat( );
	if( val > max) max = val;
	const int N = (1<<n);
	for(i=0;i<N;i++)
	{
		for(k=1;k<=n;k++)
		{
			p= (1<<(k-1));
			if(i & p)
			{
				for(j=1;j<=m;j++)
					b[k][j]=-a[k][j];
			}	
			
		}	
		val=calc_mat();
			if(val>max)
				max=val;
		for(k=1;k<=n;k++)
		{
			p= (1<<(k-1));
			if(i & p)
			{
				for(j=1;j<=m;j++)
					b[k][j]=-b[k][j];
			}	
			
		}	
		
	}	
	printf("%d\n",max);
	return 0;
}