Pagini recente » Cod sursa (job #2251416) | Cod sursa (job #2160723) | Cod sursa (job #2602654) | Cod sursa (job #905862) | Cod sursa (job #1651191)
#include <fstream>
#include <algorithm>
#include <cmath>
#define nmax 18
using namespace std;
ifstream fin("flip.in");
ofstream fout("flip.out");
int n, m, matrix[nmax][nmax], max_sum;
void assign_to_column(int j) {
for (int i = 1; i <= n; ++i)
matrix[i][j] *= -1;
}
void verifier_and_maker() {
int total = 0;
for (int i = 1; i <= n; ++i) {
int sum = 0;
for (int j = 1; j <= m; ++j)
sum += matrix[i][j];
total += abs(sum);
}
max_sum = max(max_sum, total);
}
void back_tracking(int position) {
assign_to_column(position);
if (position != m)
back_tracking(position + 1);
else
verifier_and_maker();
assign_to_column(position);
if (position != m)
back_tracking(position + 1);
else
verifier_and_maker();
}
void read_input() {
fin >> n >> m;
for (int i = 1; i <= n; ++i)
for (int j = 1; j <= m; ++j)
fin >> matrix[i][j];
back_tracking(1);
fout << max_sum;
}
int main()
{
read_input();
return 0;
}