Pagini recente » Cod sursa (job #1454934) | Cod sursa (job #1929185) | Cod sursa (job #1157811) | Cod sursa (job #3171048) | Cod sursa (job #1147276)
#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();
}