Cod sursa(job #108097)

Utilizator rethosPaicu Alexandru rethos Data 21 noiembrie 2007 16:59:56
Problema Jocul Flip Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <fstream.h>
#define tip long long
tip a[16][16],b[16][16];
int n,m,v[16];
float s,smax;
int verif()
{ int i;
  for (i=1;i<=n;i++) if (v[i]==-1) return 1;
  return 0;
}
float suma(int j)
{ int i;
  float suma=0;
  for (i=1;i<=n;i++)
	suma+=b[i][j];
  return suma;
}
void flip(int j)
{ int i;
  for (i=1;i<=n;i++)
	b[i][j]=-b[i][j];
}
int main()
{ int i,j;
  ifstream f("flip.in");
  ofstream g("flip.out");
  f>>n>>m;
  for (i=1;i<=n;i++)
	for (j=1;j<=m;j++) f>>a[i][j];
  f.close();
  for (i=1;i<=n;i++) v[i]=-1;
  v[i]=0;
  while (verif())
	{ for (i=1;i<=n;i++)
		{ if (v[i]==0) { v[i]=-1;break;}
		  else if (v[i]==1) v[i]=-1;
			else { v[i]=1;break;}
		}
	  for (i=1;i<=n;i++)
		for (j=1;j<=m;j++)
			b[i][j]=a[i][j]*v[i];
	  for (j=1;j<=m;j++)
		if (suma(j)<0) flip(j);
	  s=0;
	  for (i=1;i<=n;i++)
		for (j=1;j<=m;j++)
			s+=b[i][j];
	  if (s>smax) smax=s;
	}
  g<<smax;
  g.close();
  return 0;
}