Pagini recente » Cod sursa (job #1873417) | Cod sursa (job #688004) | Cod sursa (job #1058650) | Cod sursa (job #2109618) | Cod sursa (job #3191864)
#include <fstream>
#include <vector>
#include <climits>
using namespace std;
int a[20][20], n, m, sol = INT_MIN;
vector<int> subset;
void solve() {
for(int line : subset) {
for(int j = 1; j <= m; j++) {
a[line][j] *= -1;
}
}
int sum_total = 0;
for(int j = 1; j <= m; j++) {
int sum_col = 0;
for(int i = 1; i <= n; i++) {
sum_col += a[i][j];
}
sum_total += abs(sum_col);
}
sol = max(sol, sum_total);
// undo
for(int line : subset) {
for(int j = 1; j <= m; j++) {
a[line][j] *= -1;
}
}
}
void backtrack(int val) {
if(val == n + 1) {
solve();
return;
}
subset.push_back(val);
backtrack(val + 1);
subset.pop_back();
backtrack(val + 1);
}
int main() {
ifstream fin("flip.in");
ofstream fout("flip.out");
fin >> n >> m;
for(int i = 1; i <= n; i++) {
for(int j = 1; j <= m; j++) {
fin >> a[i][j];
}
}
backtrack(1);
fout << sol;
return 0;
}