Cod sursa(job #208739)

Utilizator albuaAlbu Alexandru albua Data 17 septembrie 2008 23:09:41
Problema Jocul Flip Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <stdio.h>
#include <values.h>

//using namespace std;

FILE *f,*g;

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

long calculeaza_suma()
{
  int i,j;
	long tsum=0;
	for(i=1;i<=n;i++)
	  for(j=n+1;j<=t;j++)
		  if(v[i]!=v[j])
		    tsum+=a[i][j-n] * -1;
		  else
		    tsum+=a[i][j-n];
  return tsum;
}

void genereaza()
{
  int i,j;
	i=t;
	while(v[i]==1)i--;
	v[i]++;
	for(j=i+1;j<=t;j++)v[j]=0;
}

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]);
	for(i=0;i<=n+m;i++)
	  v[i]=0;
	t=m+n;
	while(v[0]!=1)
	  {
		  tsum=calculeaza_suma();
			if(tsum>smax)
			  smax=tsum;
			genereaza();
		}
	fprintf(g,"%ld\n",smax);
	fclose(f);   fclose(g);
  return 0;
}