Cod sursa(job #1443224)

Utilizator tamionvTamio Vesa Nakajima tamionv Data 27 mai 2015 11:08:10
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <fstream>
#include <utility>
#include <array>
#include <limits>
using namespace std;

constexpr int nmax = 16;

using mat = array<array<int, nmax>, nmax>;

int find_max_sum_config(const mat& tabla, const uint16_t config, const int n, const int m){
    int rez = 0;
    for(int i = 0, suma_lin; i < n; ++i){
        suma_lin = 0;
        for(int j = 0; j < m; ++j){
            suma_lin += (config&(1<<j) ? tabla[i][j] : -tabla[i][j]); }
        rez += max(suma_lin, -suma_lin); }
    return rez; }

int main(){
    ifstream f("flip.in");
    ofstream g("flip.out");
    int n, m;
    mat tabla;
    f >> n >> m;
    for(int i = 0; i < n; ++i){
        for(int j = 0; j < m; ++j){
            f >> tabla[i][j]; } }
    uint16_t config = 0;
    int rez = numeric_limits<decltype(rez)>::min();
    for(int i = 0, maxim = 1<<m; i < maxim; ++i){
        rez = max(rez, find_max_sum_config(tabla, config, n, m));
        ++config; }
    g << rez;
    return 0; }