Pagini recente » Cod sursa (job #2524739) | Cod sursa (job #2757857) | Cod sursa (job #3254801) | Cod sursa (job #2325506) | Cod sursa (job #2325886)
#include <stdlib.h>
#include <stdint.h>
#include <string>
#include <vector>
#include <iostream>
#include <unordered_map>
#include <memory>
#include <algorithm>
#include <deque>
#include <iterator>
#include <numeric>
#include <assert.h>
#include <cstdlib>
#include <sstream>
#include <fstream>
#define INPUT_PATH ""
#define OUTPUT_PATH ""
void algorithm();
int main()
{
algorithm();
return 0;
}
using namespace std;
namespace
{
struct Matrix
{
int rows;
int cols;
vector<int> matrix;
};
void solve(
const int colNr,
const Matrix& m,
int& solution,
vector<int> colSign)
{
if (colNr == m.cols)
{
int sum = 0;
for (int row = 0; row < m.rows; ++row)
{
int sumRow = 0;
for (int col = 0; col < m.cols; ++col)
sumRow += colSign[col]*m.matrix[row*m.cols+col];
sum += abs(sumRow);
}
solution = max(sum, solution);
}
else
{
colSign[colNr] = 1;
solve(colNr + 1, m, solution, colSign);
colSign[colNr] = -1;
solve(colNr + 1, m, solution, colSign);
}
}
}
////////////////////////////////////////////////////////////////////////////////
void algorithm()
{
ifstream inputFile(INPUT_PATH "flip.in");
ofstream outputFile(OUTPUT_PATH "flip.out");
Matrix m;
inputFile >> m.rows;
inputFile >> m.cols;
m.matrix.reserve(m.rows*m.cols);
int readVal = 0;
while (inputFile >> readVal)
{
m.matrix.push_back(readVal);
}
int solution = 0;
vector<int> colSign(m.cols, 1);
solve(0, m, solution, colSign);
outputFile << solution;
inputFile.close();
outputFile.close();
}