Cod sursa(job #3349494)

Utilizator eric_dragosDragos Eric eric_dragos Data 30 martie 2026 19:41:31
Problema Jocul Flip Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ifstream fin("flip.in");
ofstream fout("flip.out");
const int N = 17;
int n,m, a[N][N],s = 0, smax = INT_MIN, is_fliped[N];

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

void flip_line(){
    for(int i = 1; i<=n; i++){
        if(is_fliped[i]){
            for(int j = 1; j<=m; j++) a[i][j] *= -1;
        }
    }
}

void check_sum(){
    int scol =0, sum = 0 ;
    flip_line();
    for(int j = 1; j<=m; j++){
        scol = 0;
        for(int i = 1; i<=n; i++) scol += a[i][j];

        if(scol < 0) sum -= scol;
        else sum += scol; 
    }
    smax = max(sum, smax);

    flip_line();
}

void back(int k){
    if(k > n){
        check_sum();
        return;
    }
    for(int fliped = 0; fliped <= 1; fliped++ ){
        is_fliped[k] = fliped;
        back(k+1);
    }
}
int main(){
    citire();
    back(1);
    fout << smax;

    return 0;
}