Cod sursa(job #2352888)

Utilizator adrian_negreanuAdrian Negreanu adrian_negreanu Data 23 februarie 2019 18:43:37
Problema Jocul Flip Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.31 kb
#include <fstream>

using namespace std;

ifstream cin("flip.in");
ofstream cout("flip.out");


string detectareCB(int nr, int biti) {
    string r = "";
    for (int i = 1; i <= biti; i++) {
        int b=nr%2;
        nr /= 2;
        r = (char)(b + '0') + r;
    }
    return r;
}

int n, m, i, j, mat[20][20], cmat[20][20], k, smax;
string cbCurent;

int main() {
    cin >> n >> m;
    for(i = 0; i < n; i++)
    {
        for(j = 0; j < m; j++)
        {
            cin >> mat[i][j];
        }
    }
    

    for (k = 0; k <= (1 << n) - 1; k++) {
        cbCurent = detectareCB(k,n);
        //flip pe coloane (pe fiecare coloana care are 1 in dreptul ei inmultesc cu -1)
        for (i = 0; i < n; i++) {
            for (j = 0; j < m; j++) {
                cmat[i][j] = mat[i][j];
            }
        }

        for (j = 0; j < m; j++) {
            if (cbCurent[j]=='1') {
                for (i = 0; i < n; i++) {
                    cmat[i][j] *= -1;
                }
            }
        }

        int s = 0;
        for (i = 0; i < n; i++) {
            int sLinie = 0;
            for (j = 0; j < m; j++)
            {
                sLinie+=cmat[i][j];
            }
            s += abs(sLinie);
        }

        smax = max(smax, s);
    }

    cout << smax;

    cin.close();
    cout.close();
    return 0;
}