Cod sursa(job #2231159)

Utilizator caesar2001Stoica Alexandru caesar2001 Data 13 august 2018 12:16:26
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <bits/stdc++.h>
#define lsb(x) x & -x

using namespace std;
ifstream in("flip.in");
ofstream out("flip.out");

const int NMAX = 20;
int v[NMAX][NMAX];

int main() {
    int n, m;
    in >> n >> m;
    for(int i = 1; i <= n; i ++)
        for(int j = 1; j <= m; j ++)
            in >> v[i][j];
    int sol = -20000000;
    for(int step = 0; step < (1 << n); step ++) {
        for(int i = 0; i < n; i ++)
            if((1 << i) & step)
                for(int j = 1; j <= m; j ++)
                    v[i + 1][j] *= (-1);
        int pret = 0;
        for(int j = 1; j <= m; j ++) {
            int sum = 0;
            for(int i = 1; i <= n; i ++)
                sum += v[i][j];
            if(sum < 0)
                pret -= sum;
            else
                pret += sum;
        }
        sol = max(sol, pret);

        for(int i = 0; i < n; i ++) ///go back
            if((1 << i) & step)
                for(int j = 1; j <= m; j ++)
                    v[i + 1][j] *= (-1);
    }
    out << sol;
    return 0;
}