Cod sursa(job #1827318)

Utilizator deresurobertoFMI - Deresu Roberto deresuroberto Data 11 decembrie 2016 18:50:51
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <fstream>
#define sz 16
using namespace std;
int n, m, x, sol, lnFlipSign[sz+1], colSum[sz+1], mat[sz+1][sz+1];

ifstream fin("flip.in");
ofstream fout("flip.out");

int main()
{
    fin >> n >> m;

    for (int i = 0; i < n; i++)
    {
        lnFlipSign[i] = 1;
        for (int j = 0; j < m; j++)
        {
            fin >> x;
            colSum[j] += x;
            mat[i][j] = x;
        }
    }

    for (int  num = 0; num < (1<<n); num++)
    {
        for (int i = 0; i < n; i++)
        {
            int flipSign = 1;
            if ((num&(1<<i)) > 0)
                flipSign = -1;

            if (lnFlipSign[i] != flipSign)
            {
                lnFlipSign[i] = flipSign;
                for (int j = 0; j < m; j++)
                    colSum[j] += flipSign * 2 * mat[i][j];
            }
        }

        int sum = 0;
        for (int j = 0; j < m; j++)
            sum += max(colSum[j], -colSum[j]);

        sol = max(sol, sum);
    }

    fout << sol;

    return 0;
}