Cod sursa(job #757346)

Utilizator Dakar91Duta Grig Dakar91 Data 11 iunie 2012 21:27:18
Problema Jocul Flip Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 3.05 kb
#include <stdio.h>

int main()
{
    
    FILE *f, *g;
    
    f = fopen("flip.in", "r");
     g = fopen("flip.out", "w");
    int n, m;
    fscanf(f, "%d", &n);
    fscanf(f, "%d", &m);
    long a[n][m], a2[n][m], line[n], col[m],s=0, suma = 0, sumanou = 0;
    for(int i = 0; i < n; i++)
            for (int j = 0; j < m; j++)
                fscanf(f, "%ld", &a[i][j]);
                
    for(int i = 0; i < n; i++)
            for (int j = 0; j < m; j++)
            {
                a2[i][j] = a[i][j];
                suma += a[i][j];
                }   
                
     for(int i = 0; i < n; i++)
            for (int j = 0; j < m; j++)
                if (a[i][j] > 0)
                   {
                            suma = 0;
                            sumanou = 0;
                            for(int k = 0; k < n; k++)
                            if(k != i){
                                    suma += a[k][j];
                                    sumanou += (-a[k][j]);
                                    }
                            for(int k = 0; k < m; k++)
                            if(k != j){
                                    suma += a[i][k];
                                    sumanou += (-a[i][k]);
                                    }
                            if(sumanou > suma){
                                      for(int k = 0; k < n; k++)  
                                              if(k != i)
                                                   a[k][j] = -a[k][j];    
                                      for(int k = 0; k < m; k++)
                                              if(k != j)
                                                   a[i][k] = -a[i][k];
                                                   }        
                                      
                                      
                            }         
                        
    
                
                
              for(int j = 0; j < m; j++)
               col[j] = 0;  
     for(int i = 0; i < m; i++){
            
            for (int j = 0; j < n; j++)  
                col[i] += a[j][i];
                }
       for(int i = 0; i < m; i++)
               if(col[i] < 0)
                         for(int j = 0; j < n; j++)
                                 a[j][i] = a[j][i] * (-1);
                                 
                         
      for(int i = 0; i < n; i++)
                line[i] = 0;      
      for(int i = 0; i < n; i++)
            for (int j = 0; j < m; j++)  
                line[i]+= a[i][j];
      for(int i = 0; i < n; i++)
              if(line[i] < 0)
                   for (int j = 0; j < m; j++)
                       a[i][j] = a[i][j] * (-1); 
       
       for(int i = 0; i < n; i++)
            for (int j = 0; j < m; j++)
            {
                
                s += a[i][j];
              
                }
       
              
      
                        
    
   
    fprintf(g, "%ld", s);
  
     
    }