Cod sursa(job #1518238)

Utilizator sergiu.marinSergiu Marin sergiu.marin Data 5 noiembrie 2015 19:26:38
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <cstdio>
#include <cmath>
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

#define rep(i, from, to) for (int i = from; i < (int)to; ++i)
#define trav(a, x) for (auto& a : x)
#define all(x) x.begin(), x.end()
#define sz(x) (int)x.size()
typedef long long ll; 
typedef unsigned long long ull;
typedef pair<int, int> pii;
typedef vector<int> vi;

const int N = 1111;
int v[N]; // coloanele
int a[N][N];
int n, m, ans;

void det() {
    int best = 0;
    rep(i,0,n) { 
        int sum = 0;
        rep(j,0,m) {
            sum += a[i][j] * v[j];
        }
        best += max(sum, -sum); // liniile 
    }
    ans = max(ans, best);
}

void bk(int k) {
    if (k == m) {
        det();
        return;
    }
    v[k] = 1;
    bk(k + 1);
    v[k] = -1;
    bk(k + 1);
}

int main() {
    freopen("flip.in", "r", stdin);
    freopen("flip.out", "w", stdout);
    cin >> n >> m;
    rep(i,0,n) rep(j,0,m) cin >> a[i][j];
    bk(0);
    cout << ans << endl;
}