Cod sursa(job #992891)

Utilizator v_silviuVlasceanu Silviu v_silviu Data 2 septembrie 2013 18:36:12
Problema Jocul Flip Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.37 kb
  #include<fstream>
  using namespace std;
  int n,m,i,j,a[16][16];
  void citire()
  {
      fstream f("flip.in",ios::in);
      f>>n>>m;
      for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
          f>>a[i][j];
      f.close();
  }
  int suma_poz_col(int j, int contor) //contor=0 -> suma nr pozitive, altfel suma nr negative
  {
      int k,s=0,s2=0;
       for(k=1;k<=n;k++)
         if(a[k][j]>=0) s+=a[k][j];
         else s2+=a[k][j];
       if(!contor) return s;
       else return s2;
  }
  int suma_poz_lin(int i, int contor)
  {
      int k,s=0,s2=0;
      for(k=1;k<=m;k++)
        if(a[i][k]>=0) s+=a[i][k];
        else s2+=a[i][k];
      if(!contor) return s;
      else return s2;
  }
  void modif_col(int j)
  {
      int k;
      for(k=1;k<=n;k++) a[k][j]=-a[k][j];
  }
  void modif_lin(int i)
  {
      int k;
      for(k=1;k<=m;k++) a[i][k]=-a[i][k];
  }
  void modificare_matrice()
  {
      for(j=1;j<=m;j++)
        if(suma_poz_col(j,0)<=-suma_poz_col(j,1)) modif_col(j);
      for(i=1;i<=n;i++)
        if(suma_poz_lin(i,0)<=-suma_poz_col(i,1)) modif_lin(i);
  }
  void scrie()
  {
      int s=0;
      fstream g("flip.out",ios::out);
      for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
           s+=a[i][j];
      g<<s;
      g.close();
  }
  int main()
  {
      citire();
      modificare_matrice();
      scrie();
  }