Cod sursa(job #2253502)

Utilizator LolkekzorChiorean Tudor Lolkekzor Data 4 octombrie 2018 09:14:04
Problema Jocul Flip Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <fstream>
using namespace std;

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

#define inf ~(1 << 31)

int i, j, mat[20][20], ans, line, n, m;

void flipLine(int line) {
    for (int i = 1 ; i <= m ; i++)
        mat[line][i] = -mat[line][i];
}

int checkSum() {
    int sum = 0, crt;
    for (int j = 1 ; j <= m ; j++) {
        crt = 0;
        for (int i = 1 ; i <= n ; i++) {
            crt += mat[i][j];
        }

        sum += abs(crt);
    }

    return sum;
}

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

    ans = -inf;
    for (i = 0 ; i < (1 << n) ; i++) {
        for (j = 1, line = 1 ; j <= i ; j <<= 1, line++) {
            if (i & j) {
                flipLine(line);
            }
        }
        ans = max(ans, checkSum());
    }

    fout << ans;

    return 0;
}