Cod sursa(job #3340396)

Utilizator AnSeDraAndrei Sebastian Dragulescu AnSeDra Data 14 februarie 2026 09:56:45
Problema Jocul Flip Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.23 kb
#include <fstream>

using namespace std;

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

const int Nmax = 20;

int n, m;
long long sol;
int mat[Nmax][Nmax];
int masca;

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

void flip(){
    for(int bit = 0; bit < n; bit++){
        if(masca & (1 << bit)){
            int i = bit + 1;
            for(int j = 1; j <= m; j++){
                mat[i][j] *= (-1);
            }
        }
    }
}

void verificare_suma(){
    long long sum, suma_coloana;

    flip();

    sum = 0;
    for(int j = 1; j <= m; j++){
        suma_coloana = 0;
        for(int i = 1; i <= n; i++){
            suma_coloana += mat[i][j];
        }

        if(suma_coloana < 0){
            sum -= suma_coloana;
        }
        else{
            sum += suma_coloana;
        }
    }

    sol = max(sol, sum);

    flip();
}

void rezolvare(){
    for(masca = 0; masca < (1 << n); masca++){
        verificare_suma();
    }
}

void afisare(){
    fout << sol;
}

int main(){
    citire();

    sol = 0;
    rezolvare();

    afisare();

    return 0;
}