Cod sursa(job #940120)

Utilizator SRaduRadu Szasz SRadu Data 15 aprilie 2013 17:41:42
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <fstream>
#include <cstring>

#define MAX 17

using namespace std;

int N, M, maxim;
int S[MAX], aux[MAX], V[MAX][MAX];

inline int abs(const int &X) {
    if(X < 0) return -X;
    return X;
}

void citire() {
    ifstream in("flip.in");
    in>>N>>M;
    for(int i = 1; i <= N; i++)
        for(int j = 1; j <= M; j++) {
            in>>V[i][j];
            S[i] += V[i][j];
        } in.close();
}

void solve() {
    for(int conf = 0; conf < (1 << M); conf++) {
        memcpy(aux, S, sizeof(S));
        for(int i = 1; i <= M; i++) {
            if(conf & (1 << (i - 1))) {
                for(int j = 1; j <= N; j++)
                    aux[j] -= 2 * V[j][i];
            }
        }
        int ans = 0;
        for(int i = 1; i <= N; i++) {
            ans += abs(aux[i]);
        } maxim = max(maxim, ans);
    }
}

void afisare() {
    ofstream out("flip.out");
    out<<maxim<<"\n";
    out.close();
}

int main() {
    citire();
    solve();
    afisare();
    return 0;
}