Cod sursa(job #1722195)

Utilizator Adrian9602Adrian Cucu Adrian9602 Data 27 iunie 2016 16:05:54
Problema Jocul Flip Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.74 kb
#include<fstream>
#include<iostream>
//#include<algorithm>

//using std::cout ;

std::ifstream fin ;
std::ofstream fout ;

int N , M ;
int  F[ 17 ][ 17 ] ;
long int S_lin [ 17 ] ;
long int S_col [ 17 ] ;
long int S ;
long int S1 ;



int main()
{
    fin.open("filip.in" , std::ios::in ) ;
    fout.open("filip.out" , std::ios::out ) ;

    fin >> N >> M ;

    for ( int i = 0 ; i < N ; ++ i )
    for ( int j = 0 ; j < M ; ++ j ){
        fin >> F[ i ][ j ] ;
        S_lin[ i ] += F [ i ] [ j ] ;
        S_col[ j ] += F [ i ] [ j ] ;
    }







    //for ( int i = 0 ; i < N ; ++ i ) cout << S_lin[ i ] << ' ' ;

  // cout << '\n' << '\n' ;

    //for ( int i = 0 ; i < M ; ++ i ) cout << S_col[ i ] << ' ' ;




    int k = 0 ;
    for ( int i = 0 ; i < N ; ++ i )
         if ( S_lin [ i ] <= S_lin[ k ] )
             k = i ;

    int l = 0 ;
    for ( int i = 0 ; i < N ; ++ i )
         if ( S_col [ i ] <= S_col[ l ] )
             l = i ;





    for ( int i = 0 ; i < N ; ++ i )
        for ( int j = 0 ; j < M ; ++ j ){
            if ( i == k  )
                S += (-1)* F[i][j] ;

            else  S += F[i][j] ;
        }


    for ( int i = 0 ; i < N ; ++ i )
        for ( int j = 0 ; j < M ; ++ j ){
            if ( j == l  )
                S1 += (-1)* F[i][j] ;

            else  S1 += F[i][j] ;
        }

        S1 = std::max(S1 ,S ) ;
        S= 0 ;



    for ( int i = 0 ; i < N ; ++ i )
        for ( int j = 0 ; j < M ; ++ j ){
            if ( j == l || k == i  )
                S += (-1)* F[i][j] ;

            else  S += F[i][j] ;
        }







        fout << std::max(S ,S1 )  << '\n' ;












    return  0 ;
}