Cod sursa(job #2359504)

Utilizator CostiVVoicu Costi CostiV Data 28 februarie 2019 21:33:27
Problema Jocul Flip Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.55 kb
#include<fstream>
using namespace std;

int main()
{
    ifstream fin ( "flip.in" );
    ofstream fout ( "flip.out" );
    int N , M , i , j , v[17][17] , s=0;
    fin>>N>>M;
    if ( 1 <= N && M <= 16 ){
    for ( i = 1 ; i <= N ; ++i )
    {
        for ( j = 1 ; j <= M ; ++ j )
            fin>>v[i][j];
    }
    //Aflarea sumei min de pe linii
    int sL = 0 , lin[17] , L=0;
    for ( i = 1 ; i <= N ; ++i )
    {
        sL = 0;
        for ( j = 1 ; j <= M ; ++j )
        {
            sL = sL + v[i][j];
        }
        if ( sL < 0 )
        {
            ++L;
            //Modificam numerele care au suma min
            for ( j = 1 ; j <= M ; ++j )
            {
                lin[L]=i;
                v[i][j] = -1 * v[i][j];//nu calculeaza urmatoarul rand neg
            }
        }
    }

    //Aflarea sumei min de pe coloana
    int sc = 0 , col[17] , c=0;

     for ( j = 1 ; j <= M ; ++j )
    {
        sc = 0;
        for ( i = 1 ; i <= N ; ++i )
        {
            sc = sc + v[i][j];
        }
        if ( sc < 0 )
        {
            ++c;
            //Modificam numerele care au suma min
            for ( i = 1 ; i <= N ; ++i )
            {
                col[c]=j;
                v[i][j] = -1 * v[i][j];
            }
        }
    }
    int c1 , L1;
    for ( c1 == 1 && L1 == 1 ; L1 <= L && c1 <= c ; ++L1 && ++c1 )
        v[lin[L1]][col[c1]]*=-1;

    for ( i = 1 ; i <= N ; ++i )
    {
        for( j = 1 ; j <= M ; ++j )
            s = s + v[i][j];
    }
    fout<<s;
}
}