Cod sursa(job #1006153)

Utilizator spadasinoIulian spadasino Data 6 octombrie 2013 15:22:13
Problema Jocul Flip Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.17 kb
#include<iostream>
#include<stdio.h>
using namespace std;

#define MAX 17


void citire (int v[MAX][MAX], long int n, long int m)
{     
   int i,j; 
           
   for(i=1;i<=n;i++)
   for(j=1;j<=m;j++)
      cin>>v[i][j];
                       
          
 }
 
 
 void afisare (int v[MAX][MAX], long int n, long int m)
{     
   int i,j; 
           
   for(i=1;i<=n;i++)
   { for(j=1;j<=m;j++)
     cout<<v[i][j]<<" ";
     cout<<endl;  
   } 
                       
            
 }
 
 
 int flip_c (int v[MAX][MAX], long int n, long int m, long int lin)
 {
   int suma = 0;  
   int j;        
             
   for(j=1;j<=m;j++)  
   v[lin][j] = 0 - v[lin][j];      
   
  
   for(j=1;j<=m;j++) 
   suma = suma + v[lin][j];
   
   
   for(j=1;j<=m;j++)  
   v[lin][j] = 0 - v[lin][j];      
   
   
   return suma;  
             
 }
 
  
 int flip_l (int v[MAX][MAX], long int n, long int m, long int col)
 {
   int suma = 0;   
   int i;    
                   
   for(i=1;i<=n;i++)  
   v[i][col] = 0 - v[i][col];   
   
   
   for(i=1;i<=n;i++)     
   suma = suma +  v[i][col];
   
   
   for(i=1;i<=n;i++)  
   v[i][col] = 0 - v[i][col];   
   
   
   return suma;         
 }
 
 
int main()
{ 
   int v[MAX][MAX];
   long int i,j,n,m,s_max,smax;
   
   int si=1, sj=1;
  
           
  freopen("flip.in","r",stdin);          
  freopen("flip.out","w",stdout);
   
  cin>>n>>m;
  citire(v,n,m);

  s_max = -999;      
  smax = -999;  
  
  int sumaX=0; 
          
  for(i=1;i<=n;i++)
    if(flip_c (v, n, m, i) > s_max) { s_max = flip_c (v, n, m, i);  si=i; }
  
  
  for(j=1;j<=m;j++)
    if(flip_l (v, n, m, j) > smax) { smax = flip_l (v, n, m, j);  sj=j; }
  
  /*
  if (smax > s_max) cout<<smax;
  if (smax == s_max) cout<<s_max;
  if (smax < s_max) cout<<s_max; 
  */
  
  //afisare(v,n,m);       
  
   for(j=1;j<=m;j++)  
   v[si][j] = 0 - v[si][j];      
    
     
   for(i=1;i<=n;i++)  
   v[i][sj] = 0 - v[i][sj];  
   
   
    for(i=1;i<=n;i++)    
      for(j=1;j<=m;j++)     
        sumaX += v[i][j];
        
   //cout<<sumaX;     
   cout<<smax+s_max; 
             
}