Cod sursa(job #134771)

Utilizator andoAndronic Octavian ando Data 12 februarie 2008 11:59:31
Problema Jocul Flip Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include<fstream.h>
ifstream f("flip.in");
ofstream g("flip.out");
long v[20][20],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(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;
}