Cod sursa(job #134842)

Utilizator andoAndronic Octavian ando Data 12 februarie 2008 14:17:27
Problema Jocul Flip Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.28 kb
#include<fstream.h>
ifstream f("flip.in");
ofstream g("flip.out");
long v[3][3],m,n;
void comut(long l,long p)
{ long i,j;
if(l<0)
	  for(i=0; i<n; i++)
		 v[i][p]*=-1;
	if(p<0)
	  for(i=0; i<m; i++)
		 v[l][i]*=-1;
}
long sum(long l,long p)
{ long s=0,i,j;
if(l<0)
	  for(i=0; i<n; i++)
		 s+=v[i][p];
	if(p<0)
	  for(i=0; i<m; i++)
		 s+=v[l][i];
	return s;
}

int main ()
{  long i,j,s1,s2,col[256],lin[256],linie,coloana;
f>>n>>m;
for(i=0; i<n; i++)
  for(j=0; j<m; j++)
	 f>>v[i][j];
	 linie=-1;
	 coloana=-1;
for(i=0; i<n; i++)
  for(j=0; j<m; j++) {
		s1=sum(i,-1);
		comut(i,-1);
		lin[++linie]=i;
		if(s1>sum(i,-1)){
		comut(i,-1);
		lin[linie]=-1;
		s2=sum(-1,j);
		comut(-1,j);
		col[++coloana]=j;
		if(s2>sum(-1,j)){ comut(-1,j); col[coloana]=-1;} }
		if(lin[linie]>=0){
		  s1=-s1+sum(i,-1);  comut(i,-1); comut(-1,j);
		  s2=-s2+sum(-1,j);
		  if(s1>0&&s2>0&&s1>s2){comut(-1,j); comut(i,-1); lin[linie]=-1;}
		}
				if(col[coloana]==-1&&lin[linie]==-1){
			comut(-1,j);   lin[linie]=i;
			comut(i,-1);   col[coloana]=j;
			if((s1+s2)>(sum(i,-1)+sum(-1,j))){
			  comut(-1,j); lin[linie]=-1; col[coloana]=-1;
			  comut(i,-1);  }
		}   }
  s1=0;
  for(i=0; i<n; i++)
	 for(j=0; j<m; j++){
						s1+=v[i][j];    }
g<<s1;
return 0;
}