Cod sursa(job #1327403)

Utilizator TeofilosTeofil Teofilos Data 26 ianuarie 2015 18:11:59
Problema Jocul Flip Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <iostream>
#include <fstream>
#include <cstdio>
using namespace std;

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

int n, m, res;
int a[20][20];
int bits[20];

inline bool generate() {
    // mask
    ++bits[n];
    for (int index = n; index >= 1; --index) {
        if (bits[index] >= 2) {
            bits[index] = 0;
            ++bits[index - 1];
        }
    }
    return !bits[0];
}

int main() {
    fin >> n >> m;
    for (int i = 1; i <= n; ++i) {
        for (int j = 1; j <= m; ++j) {
            fin >> a[i][j];
        }
    }
    while (generate()) {
        for (int i = 1; i <= n; ++i) {
            if (bits[i] == 1) {
                for (int j = 1; j <= m; ++j) {
                    a[i][j] = -a[i][j];
                }
            }
        }
        int s = 0;
        for (int j = 1; j <= m; ++j) {
            int sn = 0;
            for (int i = 1; i <= n; ++i) {
                sn = sn + a[i][j];
            }
            s = s + max(sn, -sn);
        }
        res = max(res, s);
    }
    fout << res << '\n';
    fin.close();
    fout.close();
    return 0;
}