Cod sursa(job #1150020)

Utilizator Andrei2016Baciu Andrei Andrei2016 Data 22 martie 2014 15:09:32
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <fstream>
#include <vector>
 
using namespace std;
 
vector<vector<int>> board; 
vector<short> colFlip;
 
void InitContainers(size_t n, size_t m) {
    board.resize(n,vector<int>(m,0));
    colFlip.resize(m);
}
 
void ReadData() {
    size_t n,m;
    ifstream in("flip.in");
 
    in >> n >> m;
    InitContainers(n,m);
    for(size_t i = 0; i < n; ++i)
        for(size_t j = 0; j < m; ++j)
            in >> board[i][j];
}
 
int maxSum = 0;
 
int getBoardSum() {
    int curSum = 0;
    for(size_t i = 0, n = board.size(); i < n; ++i) {
        int lineSum = 0;
        for(size_t j = 0, m = board[0].size(); j < m; ++j) 
            lineSum += board[i][j]*colFlip[j];
        curSum += max(lineSum,-lineSum);
    }
    return curSum;
}
 
int Back(size_t lvl) {
    if(lvl == board[0].size()) {
        return getBoardSum();
    }
    colFlip[lvl] = 1;
    int maxSum = Back(lvl+1);
    colFlip[lvl] = -1;
    maxSum = max(maxSum,Back(lvl+1));
    return maxSum;
}
 
void PrintSolution() {
    ofstream out("flip.out");
    out << Back(0);
}
 
int main() {
    ReadData();
    PrintSolution();
}