Cod sursa(job #1575611)

Utilizator georgeliviuPereteanu George georgeliviu Data 21 ianuarie 2016 17:55:29
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <cstdio>
#include <bitset>

using namespace std;


int a[20][20] , m , n , i , j , pas , suma , S , maxim ;
bitset <20> rez ;

void bkt( int pas )
{
    if ( pas == n + 1 )
    {
        S = 0 ;
        for ( int j = 1 ; j <= m ; j++ )
        {
            suma = 0 ;
            for ( int i = 1 ; i <= n ; i++ )
            {
                if ( rez[i] == 1 )
                {
                    suma += a[i][j]*(-1) ;
                }
                else
                {
                    suma += a[i][j] ;
                }
            }
            if ( suma < 0 )
                suma *= -1 ;
            S += suma ;
        }
        if ( maxim < S ) maxim = S ;
    }
    else
    {
        rez[pas] = 0 ;
        bkt(pas+1) ;
        rez[pas] = 1 ;
        bkt(pas+1) ;
    }
}

int main()
{
    freopen("flip.in","r",stdin);
    freopen("flip.out","w",stdout);
    scanf("%d %d",&n,&m);
    for ( int i = 1 ; i <= n ; i++ )
    {
        for ( int j = 1 ; j <= m ; j++ )
        {
            scanf("%d ",&a[i][j]);
        }
    }
    bkt(1) ;
    printf("%d ",maxim) ;
}