Cod sursa(job #3242944)

Utilizator iondodon1998Dodon Ion iondodon1998 Data 14 septembrie 2024 18:08:21
Problema Jocul Flip Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <climits>

using namespace std;

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

    int N, M;
    fin >> N >> M;
    vector<vector<int>> A(N, vector<int>(M));
    for (int i = 0; i < N; ++i) {
        for (int j = 0; j < M; ++j) {
            fin >> A[i][j];
        }
    }

    long long max_total_sum = LLONG_MIN;

    for (int row_flip_mask = 0; row_flip_mask < (1 << N); ++row_flip_mask) {
        vector<int> row_sign(N, 1);
        for (int i = 0; i < N; ++i) {
            if (row_flip_mask & (1 << i)) {
                row_sign[i] = -1;
            }
        }
        long long total_sum = 0;
        for (int j = 0; j < M; ++j) {
            long long sum_col = 0;
            for (int i = 0; i < N; ++i) {
                sum_col += row_sign[i] * A[i][j];
            }
            if (sum_col < 0) {
                sum_col = -sum_col;
            }
            total_sum += sum_col;
        }
        if (total_sum > max_total_sum) {
            max_total_sum = total_sum;
        }
    }

    fout << max_total_sum << endl;

    fin.close();
    fout.close();

    return 0;
}