Cod sursa(job #209646)

Utilizator albuaAlbu Alexandru albua Data 23 septembrie 2008 19:59:38
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <stdio.h>
#include <values.h>

//using namespace std;

FILE *f,*g;

long a[17][17],sc[17];
long smax=0-MAXLONG,tsum;
unsigned long v;
unsigned long i,j;
int n,m,t;

long calculeaza_suma(unsigned long k)
{
  int i,j;
	long tsum=0;
	for(j=1;j<=m;j++)
	  {
			tsum=0;
			for(i=0;i<n;i++)
				if(((k>>i)&1)==1)
					tsum+=a[i+1][j] * -1;
				else
					tsum+=a[i+1][j];
			if(tsum<0) sc[j]=-tsum;
			else sc[j]=tsum;
		}
	tsum=0;
	for(i=1;i<=m;i++)
	  tsum+=sc[i];
  return tsum;
}

int main()
{
  f=fopen("flip.in","r");
	g=fopen("flip.out","w");
	fscanf(f,"%d %d\n",&n,&m);
	//citire
	for(i = 1; i <= n;i++)
	  for(j = 1;j <= m;j++)
		  fscanf(f,"%ld",&a[i][j]);
	v=((unsigned long)1<<n)-1;
	for(i=1;i<=v;i++)
	  {
		  tsum=calculeaza_suma(i);
			if(tsum>smax)
			  smax=tsum;
		}
	fprintf(g,"%ld\n",smax);
	fclose(f);   fclose(g);
  return 0;
}