Cod sursa(job #805390)

Utilizator vladteodor97Cirstina Vlad vladteodor97 Data 31 octombrie 2012 12:56:51
Problema Jocul Flip Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 1 kb
#include<stdio.h>

int N,M,i,j,a[20][20],smax;
void copy(int a[20][20],int b[20][20],int N,int M)
{
	int i,j;
	for(i=1;i<=N;i++)
	{
		for(j=1;j<=M;j++)
		{
			b[i][j]=a[i][j];
		}
		
	}
}
int flip(int N,int M, int a[20][20])
{
	int i,j,s,smax,k,v,p,ss;
	int b[20][20];
	p=1;
	for(i=1;i<=N;i++)
	{
		p=p*2;
	}
	smax=-100000000;
	for(k=0;k<p;k++)
	{
		v=k;
		copy(a,b,N,M);
		for(i=1;i<=N;i++)
		{
			if(v%2==1)
			{
				for(j=1;j<=M;j++)
				{
					b[i][j]=-b[i][j];
				}
			}
			v=v/2;
		}
		ss=0;
		for(j=1;j<=M;j++)
		{
			s=0;
			for(i=1;i<=N;i++)
			{
				s=s+b[i][j];
			}
			if(s<0)
			{
				ss=ss-s;
			}
			else
			{
				ss=ss+s;
			}
		}
		if(ss>smax)
		{
			smax=ss;
		}
	}
	return smax;
}
int main()
{
	freopen("flip.in","r",stdin);
	freopen("flip.out","w",stdout);
	scanf("%d",&N);
	scanf("%d",&M);
	for(i=1;i<=N;i++)
	{
		for(j=1;j<=M;j++)
		{
			scanf("%d",&a[i][j]);
		}
	}
	printf("%d",flip(N,M,a));
	fclose(stdout);
	return 0;
}