Cod sursa(job #3336619)

Utilizator aureussAurelian Buia aureuss Data 25 ianuarie 2026 00:55:31
Problema Jocul Flip Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <fstream>
#include <cstdint>
#include <vector>
#include <limits>

std::ifstream in("flip.in");
std::ofstream out("flip.out");

int main() {
    std::size_t N, M;
    in >> N >> M;
    std::vector<std::vector<std::int32_t>> flip(N, std::vector<std::int32_t>(M));

    for(std::size_t i = 0; i < N; ++i) {
        for(std::size_t j = 0; j < M; ++j) {
            in >> flip[i][j];
        }
    }

    std::int64_t best_sum = std::numeric_limits<std::int64_t>::min();

    for(std::int32_t mask = 0; mask < (1 << N); ++mask) {
        std::int64_t current_sum = 0;

        for(std::size_t column = 0; column < M; ++column) {
            std::int64_t column_sum = 0;

            for(std::size_t row = 0; row < N; ++row) {
                std::int64_t value = flip[row][column];

                if (mask & (1 << row)) {
                    value *= -1;
                }

                column_sum += value;
            }

            current_sum += std::abs(column_sum);
        }
        best_sum = std::max(best_sum, current_sum);
    }

    out << best_sum << '\n';
    return 0;
}