Cod sursa(job #381414)

Utilizator Magnuscont cu nume gresit sau fals Magnus Data 10 ianuarie 2010 16:07:42
Problema Jocul Flip Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <stdio.h>
#include <math.h>
#include <stdlib.h>

long long max,k,v[100][100],u[100],n,m;

void suma()
{
	long long i,j,s,s2;
	s2=0;
	for (j=1;j<m+1;j++)
	{
		s=0;
		for (i=1;i<n+1;i++) s+=(u[i]+1)*v[i][j];
		s2+=abs(s);
	}
	if (s2>max) max=s2;
}

void back()
{
	--k;
	long long i;
	if (k==0) for (i=1;i<n+1;i++) if (u[i]==0) {u[i]=-2;suma();u[i]=0;}
	else for (i=1;i<n+1;i++) if (u[i]==0) {u[i]=-2;back();u[i]=0;}
	++k;
}

int main()
{
	long long i,j,s;
	freopen("flip.in","r",stdin);
	freopen("flip.out","w",stdout);
	scanf("%lld%lld",&n,&m);
	for (i=1;i<n+1;i++)
		for (j=1;j<m+1;j++) scanf("%lld",&v[i][j]);
	for (j=1;j<m+1;j++)
	{
		s=0;
		for (i=1;i<n+1;i++) s+=v[i][j];
		max+=abs(s);
	}

	for (k=1;k<n+1;k++) back();
	printf("%lld",max);
	return 0;
}