Cod sursa(job #954200)

Utilizator chiriacandrei25Chiriac Andrei chiriacandrei25 Data 28 mai 2013 18:02:54
Problema Jocul Flip Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <cstdio>

using namespace std;

int a[30][30],b[30][30],gen1[30],gen2[30];

int main()
{
	int n,m,i,j;
	long long int s,maxim,cs;
	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]);
	maxim=0;
	while(gen1[0]==0)
	{
		s=0;
		for(i=1;i<=n;i++)
			if(gen1[i]==0)
				for(j=1;j<=m;j++)
					b[i][j]=a[i][j];
			else
				for(j=1;j<=m;j++)
					b[i][j]=-a[i][j];
		for(i=1;i<=n;i++)
			for(j=1;j<=m;j++)
				s+=b[i][j];
		for(i=0;i<=m;i++)
			gen2[i]=0;
		cs=s;
		while(gen2[0]==0)
		{
			s=cs;
			for(i=1;i<=m;i++)
				if(gen2[i]==1)
					for(j=1;j<=n;j++)
						s=s-b[j][i]-b[j][i];
			if(s>maxim)
				maxim=s;
			i=m;
			while(gen2[i]==1)
				gen2[i--]=0;
			gen2[i]++;
		}
		i=n;
		while(gen1[i]==1)
			gen1[i--]=0;
		gen1[i]++;
	}
	printf("%d\n", maxim);
	return 0;
}