Cod sursa(job #17000)

Utilizator wickedmanCristian Strat wickedman Data 14 februarie 2007 18:36:29
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb

#include <string>
#include <fstream>
#include <vector>

using namespace std;

const int kMaxD = 16;

int A[kMaxD][kMaxD], n, m;

void input() {
    fstream f;
    f.open("flip.in", ios::in);
    f >> n >> m;

    int i, j;
    for (i = 0; i < n; ++i)
        for (j = 0; j < m; ++j)
            f >> A[i][j];

    f.close();
}

void output(int sol) {
    fstream f;
    f.open("flip.out", ios::out);
    f << sol << endl;
    f.close();
}

int sum(int cflags) {
    int i, j, rsum = 0;

    for (i = 0; i < n; ++i) {
        int csum = 0;
        for (j = 0; j < m; ++j)
            csum += A[i][j] * (cflags & (1 << j) ? -1 : 1);

        if (csum > 0)
            rsum += csum;
        else
            rsum -= csum;
    }

    return rsum;
}

int main(void) {
    input();

    int best = sum(0);
    for (int cflags = 1; cflags < (1 << m); ++cflags) {
        int asum = sum(cflags);
        if (asum > best)
            best = asum;
    }
    output(best);

    return 0;
}