Cod sursa(job #2352918)

Utilizator lnegreanuLucia Negreanu-Maior lnegreanu Data 23 februarie 2019 19:01:02
Problema Jocul Flip Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.19 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[25][20], k;
long long smax, s;
string cbCurent;

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

    for (i = 0; i < m; i++)
        for (j = 0; j<m; j++)
            smax += mat[i][j];

    for (k = 1; 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 (j = 0; j < m; j++)
        {
            mat[20][j] = (cbCurent[j] == '0' ? 1 : -1);
        }
        s = 0;
        for (i = 0; i < n; i++)
        {
            int sLinie = 0;
            for (j = 0; j < m; j++)
            {
                sLinie += mat[i][j] * mat[20][j];
            }
            s += abs(sLinie);
        }

        smax = max(smax, s);
    }

    cout << smax;

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