Cod sursa(job #2701070)

Utilizator ionut98Bejenariu Ionut Daniel ionut98 Data 29 ianuarie 2021 19:15:37
Problema Jocul Flip Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.12 kb
#include<fstream>
using namespace std;
ifstream f("flip.in");
ofstream g("flip.out");

int n, m, mat[17][17], x[17], answer;

void calc(){
    //in vectorul x am hotarat deja ce linii vor fi inmultite cu -1 asa ca fac calculele pe coloana
    int sum = 0;
    for(int i = 1;i <= m;i++){
        int value = 0;
        for(int j = 1;j <= n;j++){
            value += (mat[j][i] * x[j]);
        }
        //in caz de suma negativa pe coloana inmultesc cu -1 suma ca si cand as fi lovit comutatorul de pe coloana
        if(value < 0){
            value *= -1;
        }
        sum += value;
    }
    if(answer < sum){
        answer = sum;
    }
}

//functie ce va apela functia calc() pentru fiecare combinatie de comutari de linii
void determina(int k){
    if(k == n + 1){
        calc();
    }
    else{
        x[k] = -1;
        determina(k+1);
        x[k] = 1;
        determina(k+1);
    }
}

int main(){
    f >> n >> m;
    for(int i = 1;i <= n;i++){
        for(int j = 1;j <= m;j++){
            f >> mat[i][j];
        }
    }
    determina(1);
    g << answer;
    return 0;
}