Cod sursa(job #2200108)

Utilizator stefanchistefan chiper stefanchi Data 30 aprilie 2018 12:48:59
Problema Jocul Flip Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.37 kb
#include <cstdio>
#include <bitset>
using namespace std;
int n,m;
int tabla[18][18];
long long suma_linie[18];
long long sumamax;

void read()
{
    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",&tabla[i][j]);
            suma_linie[i] +=tabla[i][j];
        }
        sumamax +=suma_linie[i];
    }
}

void Solve()
{
    for(int verification = 0 ; verification < (1<<n) ; verification++)
    {
        long long TableSum = 0;
        for(int i = 0 ; i< n ; i ++)
        {
            if(verification & (1 << i))
                TableSum -=suma_linie[i+1];
            else
                TableSum += suma_linie[i+1];
        }
        for(int j = 1 ; j < n ; j++)
        {
            long long ColumnSum = 0;
            for(int i = 0;  i< n ; i++)
            {
                if(verification & (1 << i ))
                    ColumnSum -= tabla[i+1][j];
                else
                    ColumnSum += tabla[i+1][j];
            }
            if(ColumnSum < 0)
                TableSum -= 2*ColumnSum;
        }
        if(sumamax < TableSum)
            sumamax = TableSum;
    }
    printf("%lld ", sumamax);
}



int main()
{
    read();
    Solve();
    return 0;
}