Cod sursa(job #3193250)

Utilizator SimifilLavrente Simion Simifil Data 14 ianuarie 2024 13:19:04
Problema Jocul Flip Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("flip.in");
ofstream g("flip.out");

int fr[18], n, m;
int v[18][18];
int semnc[18], semnl[18];
int maxsum = 0;

void bk( int poz )
{
    if( poz == n+1 )
    {
        for( int j = 1; j <= m; ++j )
        {
            int sumcol = 0;
            for( int i = 1; i <= n; ++i )
            {
                sumcol+=v[i][j]*semnl[i];
            }
            if( sumcol < 0 )
                semnc[j] = -1;
        }
        int sum = 0;
        for( int i = 1; i <= n; ++i )
        {
            for( int j = 1; j <= m; ++j )
            {
                sum+=v[i][j]*semnl[i]*semnc[j];
            }
        }
        if(  sum > maxsum )
            maxsum = sum;
        for( int i = 1; i <= 16; ++i )
            semnc[i] = 1;
    }
    else
    {
        semnl[poz] = 1;
        bk(poz+1);
        semnl[poz] = -1;
        bk(poz+1);
    }
}

int main()
{
    f >> n >> m;
    for( int i = 1; i <= n; ++i )
    {
        semnl[i] = 1;
        for( int j = 1; j <= m; ++j )
        {
            semnc[j] = 1;
            f >> v[i][j];
        }
    }
    bk(1);
    g << maxsum;
    return 0;
}