Cod sursa(job #1147276)

Utilizator alexandru70Ungurianu Alexandru alexandru70 Data 19 martie 2014 18:30:52
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;
ofstream out("flip.out");

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();
	}
	cout << lvl << '\n';
	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();
}