Cod sursa(job #1910120)

Utilizator RaresEGaySopterean Adrian RaresEGay Data 7 martie 2017 15:41:32
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <fstream>
#include <iostream>

#define INF 0x3f3f3f3f

using namespace std;

ifstream f("flip.in");
ofstream g("flip.out");

int n, m, s[17], a[17], v[17][17];
int sumAbs, sumMax = -INF, sumFlip, l;

inline int abs(int number){
    if (number < 0) return -number;
    return number;
}

void display_sol(int k){
    sumFlip = 0;
    for(int i=1; i<=n; ++i){
        sumAbs = 0;
        for(int j=1; j<=m; ++j){
            sumAbs += (a[j] ? -1 : 1) * v[i][j];
        }
        sumFlip += abs(sumAbs);
    }
    if(sumFlip > sumMax) sumMax = sumFlip;

}

void Back(int k)
{
    if (k == l){
        display_sol(l);
        return;
    }
    for (int i = 1 + s[k-1]; i <= m-l+k; ++i){
        s[k] = i;
        a[s[k]] = 1;
        Back(k+1);
        a[s[k]] = 0;
    }
}

int main()
{
    f >> n >> m;
    for(int i=1; i<=n; ++i){
        for(int j=1; j<=m; ++j){
            f >> v[i][j];
        }
    }

    for(l = 1; l <= m; ++l){
        Back(1);
    }

    g << sumMax << '\n';
}