Cod sursa(job #26921)

Utilizator IronWingVlad Paunescu IronWing Data 5 martie 2007 22:32:01
Problema Jocul Flip Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <fstream.h>
#include <stdlib.h>
int n, m;
long a[6][6], b[20][20];
int h[20], g[20];
long smax;
void citire()
{int i, j;
ifstream f("flip.in");
f>>n>>m;
for(i=1;i<=n;i++)
	for(j=1;j<=m;j++)
	f>>a[i][j];
}
long sum()
{ int i ,j;
	long s=0;
 for(i=1;i<=n;i++)
	for(j=1;j<=m;j++)
	s+=a[i][j];
return s;
}
void copiaza()
{ int i, j;
 for(i=1;i<=n;i++)
	 for(j=1;j<=m;j++)
	 b[i][j]=a[i][j];
}
void min1(int l)
{ for(int j=1;j<=m;j++)
	a[l][j]*=-1;
}
void min2(int c)
{ for(int i=1;i<=n;i++)
  a[i][c]*=-1;
}
long suma(int c)
 { long s=0;
 for(int i=1;i<=n;i++)
	s+=a[i][c];
return s;
}
long suma1(int l)
{ long s=0;
 for(int j=1;j<=m;j++)
  s+=a[l][j];
return s;
}
void rest()
{ for(int i=0;i<=n;i++)
	  for(int j=0;j<=m;j++)
		 a[i][j]=b[i][j];
}
void flip(int l)
{
int i,j; long s;
s=sum();
 if(s>smax) smax=s;
 if(l<=n)
 {  for(i=1;i<=n;i++)
  {   min1(i);
		 for(j=1;j<=m;j++)
		  {			 min2(j);
						 flip(l+1);
						 min2(j);
							
				}
		  min1(i);
			
  }
  }
 }
void afisare()
{ ofstream g("flip.out");
	g<<smax;
   g.close();
}
int main()
{ citire();
  smax=sum();
  flip(1);
  afisare();
  return 0;
}