Cod sursa(job #2482699)

Utilizator adelinnnAdelin Stoican adelinnn Data 28 octombrie 2019 19:08:50
Problema Jocul Flip Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <fstream>
using namespace std;
ifstream fin("flip.in");
ofstream fout("flip.out");
int n, m, mat[16][16], sum_max_l = 0, sum_max_t = 0;
void read(){
    fin>>n>>m;
    for(int i = 0; i<n; i++)
        for(int j = 0; j<m; j++)
            fin>>mat[i][j];
}
void flip_l(int l){
    for(int j = 0; j<m; j++)
        mat[l][j]*=-1;
}
void flip_c(int c){
    for(int i = 0; i<n; i++)
        mat[i][c]*=-1;
}
int sum(){
    int s = 0;
    for(int i = 0; i<n; i++)
        for(int j = 0; j<m; j++)
            s+=mat[i][j];
    return s;
}
void Back_l(int k){
    for(int i = 0; i<=1; i++){
        if(i)
            flip_l(k);
        if(k == n-1){
            int s = sum();
            if(s>sum_max_l)
                sum_max_l = s;
        }
        else
            Back_l(k+1);
    }
}
void backTr(int k){
    for(int i = 0; i<=1; i++){
        if(i)
            flip_c(k);
        if(k == m-1){
            Back_l(0);
            if(sum_max_l>sum_max_t)
                sum_max_t = sum_max_l;
        }
        else
            backTr(k+1);
    }
}
int main()
{
    read();
    backTr(0);
    fout<<sum_max_t;
    return 0;
}