Cod sursa(job #3293605)

Utilizator mateiandMatei Andone mateiand Data 12 aprilie 2025 05:34:24
Problema Jocul Flip Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <fstream>
using namespace std;

int n, m, mat[20][20], ans = 0;

int scor() {
    int sum = 0;
    for (int j = 0; j < m; ++j) {
        int s = 0;
        for (int i = 0; i < n; ++i) {
            s += mat[i][j];
        }
        sum += abs(s);
    }
    return sum;
}

void flipLinie(int linie) {
    for (int j = 0; j < m; ++j) {
        mat[linie][j] = -mat[linie][j];
    }
}

void solve() {
    for (int i = 0; i < (1 << n); ++i) {
        int originalMat[20][20];
        for (int j = 0; j < n; ++j) {
            for (int k = 0; k < m; ++k) {
                originalMat[j][k] = mat[j][k];
            }
        }
        
        for (int j = 0; j < n; ++j) {
            if (i & (1 << j)) {
                flipLinie(j);
            }
        }
        
        ans = max(ans, scor());

        for (int j = 0; j < n; ++j) {
            for (int k = 0; k < m; ++k) {
                mat[j][k] = originalMat[j][k];
            }
        }
    }
}

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

    fin >> n >> m;
    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < m; ++j) {
            fin >> mat[i][j];
        }
    }

    solve();
    fout << ans;
    return 0;
}