Cod sursa(job #587363)

Utilizator AndreiukAndrei C Andreiuk Data 4 mai 2011 18:44:17
Problema Jocul Flip Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.15 kb
#include <fstream>
using namespace std;
ifstream f("flip.in");
ofstream g("flip.out");
int a[17][17],i,j,n,m,aux,xn[17],yp[17],xp[17],yn[17],s,ok;
int main()
{ f>>n>>m;
  for(i=1;i<=n;i++)
	  for(j=1;j<=m;j++) { f>>a[i][j];
                          if(a[i][j]>0){  xp[i]+=a[i][j];           
	                                      yp[j]+=a[i][j];
						                }
						  else { xn[i]+=a[i][j];
						         yn[j]+=a[i][j];
						       }
	                     }
	  do{ ok=0;
  for(i=1;i<=n;i++) if(xp[i]<-xn[i]) { ok=1;
	                                   aux=xp[i];
                                        xp[i]=-xn[i];
                                        xn[i]=-aux;
										for(j=1;j<=m;j++) if(a[i][j]>0) { yp[j]-=a[i][j];
                                                                          a[i][j]=0-a[i][j];
                                                                          yn[j]+=a[i][j];
										                               }
                                                         else { yn[j]-=a[i][j];
                                                                a[i][j]=0-a[i][j];
																yp[j]+=a[i][j];
														      }		
                                       }
   for(j=1;j<=m;j++) if(yp[j]<-yn[j]) { ok=1;
	                                     aux=yp[j];
                                        yp[j]=-yn[j];
                                        yn[j]=-aux;
										for(i=1;i<=n;i++) if(a[i][j]>0) { xp[i]-=a[i][j];
                                                                          a[i][j]=0-a[i][j];
                                                                          xn[i]+=a[i][j];
										                               }
                                                         else { xn[i]-=a[i][j];
                                                                a[i][j]=0-a[i][j];
																xp[i]+=a[i][j];
														      }		
                                       }
	  }while(ok);
  

  for(j=1;j<=m;j++) if(yp[j]>-yn[j]) s=s+yp[j]+yn[j];
                    else s=s-yp[j]-yn[j];
  g<<s<<"\n";
					f.close();
					g.close();
					return 0;
}