Cod sursa(job #2418345)

Utilizator SemetgTemes George Semetg Data 4 mai 2019 17:30:22
Problema Jocul Flip Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <fstream>
#include <iostream>
#include <vector>
using namespace std;

const string FILE_NAME = "flip";
const int N_MAX { 20 };

template <typename T>
void p(T t) { cout << t << '\n'; }
template <typename T, typename... Args>
void p(T t, Args... args) {
    cout << t << ' ';
    p(args...);
}

ifstream in { FILE_NAME + ".in" };
ofstream out { FILE_NAME + ".out" };

int N, M;
int a[N_MAX][N_MAX];
int64_t sol { -(1LL << 62) };

void init() {
    in >> N >> M;
    
    for (int i { 1 }; i <= N; ++i)
        for (int j { 1 }; j <= M; ++j)
            in >> a[i][j];
}

int64_t suma() {
    int64_t s { 0 };
    
    for (int j { 1 }; j <= M; ++j) {
        int64_t sCol { 0 };
        for (int i { 1 }; i <= N; ++i)
            sCol += a[i][j];
        
        s += max(sCol, -sCol);
    }
    
    return s;
}

void invert(int k) {
    for (int j { 1 }; j <= M; ++j)
        a[k][j] = -a[k][j];
}

void nextLine(int k) {
    if (k > N) {
        sol = max(sol, suma());
        return;
    }
    
    nextLine(k + 1);
    invert(k);
    nextLine(k + 1);
    invert(k);
}

void solve() {
    nextLine(1);
}

void print() {
    out << sol;
}

int main() {
    init();
    solve();
    print();
}