Cod sursa(job #75559)

Utilizator ash262Alex Shvets ash262 Data 3 august 2007 13:16:41
Problema Jocul Flip Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.36 kb
#include <fstream>
#include <vector>

using namespace std;

int m,n,interm,spoz=0,sneg=0;

void comutaLin(vector<int> &v, int lin)
 { for (int i=0;i<n;i++)
     v[lin*n+i]=-v[lin*n+i];
 }

void comutaCol(vector<int> &v, int col)
 { for (int i=0;i<m;i++)
     v[col+n*i]=-v[col+n*i];
 }
 
void processLines(vector<int> &vec)
 { int index=-1;          
   for (int i=0;i<m;i++)
     {for (int j=0;j<n;j++)
        {index++; 
         if (vec[index]>=0) spoz+=vec[index];
         else sneg+=vec[index];
        }
      if (-sneg > spoz) comutaLin(vec,i);               
      spoz=0;sneg=0;
     } 
 }   
 
void processColumns(vector<int> &vec)
 { int index;
   spoz=0;sneg=0;
    for (int i=0;i<n;i++)
       {index=i;
        for (int j=0;j<m;j++)
          {if (vec[index]>=0) spoz+=vec[index];
           else sneg+=vec[index];
           index+=n;
          }
        if (-sneg > spoz) comutaCol(vec,i);               
        spoz=0;sneg=0;
       }      
 }    
 

int main(int argc, char *argv[])
{vector<int> vec;
 int suma=0;   
 ifstream in("flip.in");
 
 in>>m>>n;  
 for (int i=0;i<m*n;i++)
    { in>>interm;
      vec.push_back(interm);}      
 
 processLines(vec);
 processColumns(vec);   
    
 for(int i=0;i<m*n;i++)
   suma+=vec[i];
 
 ofstream out("flip.out");     
 out<<suma;              

    return 0;
}