Cod sursa(job #208859)

Utilizator albuaAlbu Alexandru albua Data 19 septembrie 2008 12:29:58
Problema Jocul Flip Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <stdio.h>
#include <values.h>

//using namespace std;

FILE *f,*g;

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

long calculeaza_suma(unsigned long k)
{
  int i,j;
	long tsum=0;
	for(i=0;i<n;i++)
	  for(j=n;j<t;j++)
		  if(((k>>i)&1)!=((k>>j)&1))
		    tsum+=a[i+1][j-n+1] * -1;
		  else
		    tsum+=a[i+1][j-n+1];
  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]);
	t=m+n;
	v=((unsigned long)1<<(t+1))-1;
	temp=((unsigned long)1<<32)-1;
	for(i=0;(i<=v)&&(i<temp);i++)
	  {
		  tsum=calculeaza_suma(i);
			if(tsum>smax)
			  smax=tsum;
		}
	if(v==temp)
	  {
		  tsum=calculeaza_suma(temp);
			if(tsum>smax)
			  smax=tsum;
	  
	  }
	fprintf(g,"%ld\n",smax);
	fclose(f);   fclose(g);
  return 0;
}