Cod sursa(job #1013808)

Utilizator bogdan93Grigorescu Bogdan bogdan93 Data 21 octombrie 2013 19:13:58
Problema Jocul Flip Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <iostream>
#include <fstream>

#define kNMAX 17
#define kMMAX 17


int M1[kNMAX][kMMAX], sumaMax, semn[kMMAX];
int N, M;


void back(int k){
    if (k < M){
        semn[k + 1] = 1;
        back(k + 1);
        semn[k + 1] = 0;
        back(k + 1);
    }

    int s = 0;
    for(int i = 1; i <= N; i++){
        M1[0][0] = 0;
        for(int j = 1; j <= M; j++)
            M1[0][0] += (semn[j] ? -M1[i][j] : M1[i][j]);
        if (M1[0][0] > 0)
            s += M1[0][0];
        else
            s -= M1[0][0];
    }

    if (s > sumaMax)
        sumaMax = s;
    return;
}


int main(){

    std::fstream in, out;
    in.open("flip.in", std::ios::in);
    out.open("flip.out", std::ios::out);

    in >> N >> M;
    for(int i = 1; i <= N; i++){
        for(int j = 1; j <= M; j++){
            in >> M1[i][j];
        }
    }
    //std::fill(semn, semn + kMMAX, 0);
    back(0);

    std::cout << sumaMax << std::endl;

    in.close();
    out.close();

    return 0;
}