Cod sursa(job #543330)

Utilizator blastoiseZ.Z.Daniel blastoise Data 27 februarie 2011 21:16:49
Problema Jocul Flip Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <stdio.h>
#include <string.h>

int x[2]={-1,1};

int max,N,M,i,j;
int Sr[20],Sc[20],A[20][20],sol[20];

inline void verif()
{
	int i,s;

	s=0;

	for(i=1;i<=N;i++)
		s+=sol[i]*Sc[i];

	if(s>max) max=s;
}

inline void back(int k)
{
	int i;

	if(k>N) verif();
	else
	for(i=0;i<=1;i++)
	{
		sol[k]=x[i];
		back(k+1);
	}
}

int main()
{
	freopen("flip.in","r",stdin);
	freopen("flip.out","w",stdout);

	scanf("%d%d",&N,&M);

	memset(Sr,0,sizeof(Sr));
	memset(Sc,0,sizeof(Sc));
	memset(A,0,sizeof(A));

	for(i=1;i<=N;i++)
		for(j=1;j<=M;j++)
		{
			scanf("%d",&A[i][j]);
			Sr[j]+=A[i][j];
		}

	for(i=1;i<=M;i++)
		if(Sr[i]<0)
			for(j=1;j<=N;j++)
				A[j][i]*=-1;

	for(i=1;i<=N;i++)
		for(j=1;j<=M;j++)
			Sc[i]+=A[i][j];

	memset(sol,0,sizeof(sol));
	max=0;

	back(1);

	printf("%d\n",max);

	return 0;
}