Pagini recente » Cod sursa (job #2368036) | Cod sursa (job #2204730) | Cod sursa (job #2222778) | Cod sursa (job #2362588) | Cod sursa (job #2451027)
#include <iostream>
#include <fstream>
using namespace std;
int matrix[17][17], N, M;
ifstream fin("flip.in");
ofstream fout("flip.out");
long long s_max{-1800000000000};
long long best_line_configuration_sum(int matrix[17][17])
{
long long s_current{0};
for(int i = 1; i <= N; i++)
{
long long s_line{0};
for(int j = 1; j <= M; j++) s_line += matrix[i][j];
if(s_line < 0)
{
s_line *= -1;
for(int j = 1; j <= M; j++) matrix[i][j] *= -1;
}
s_current += s_line;
}
return s_current;
}
void columns_backtracking(int column = 1, int m[17][17] = matrix)
{
if(column > M)
{
s_max = max(s_max, best_line_configuration_sum(matrix));
}
else
{
columns_backtracking(column + 1);
for(int i = 1; i <= N; i++) m[i][column] *= -1;
columns_backtracking(column + 1);
}
}
int main(void)
{
fin >> N >> M;
for(int i = 1; i <= N; i++)
{
for(int j = 1; j <= M; j++)
{
fin >> matrix[i][j];
}
}
columns_backtracking();
fout << s_max;
}