Pagini recente » Cod sursa (job #2321730) | Cod sursa (job #2138692) | Cod sursa (job #1354355) | Cod sursa (job #2173416) | Cod sursa (job #2686296)
#include <bits/stdc++.h>
#define ll long long
#define LMAX 1000005
using namespace std;
ifstream fin("flip.in");
ofstream fout("flip.out");
int n, m, comb, mt[20][20], rez, mt2[20][20], v2[20][20];
void solve() {
for (int p = 1; p <= comb; ++p) {
int sum = 0;
for (int i = 1; i <= n; ++i)
for (int j = 1; j <= m; ++j) {
if (v2[p][i] == 1)
sum += -mt2[i][j];
else
sum += mt2[i][j];
}
rez = max(rez, sum);
}
return;
}
void back(int pos, vector <int> v) {
if (pos == m) {
for (int i = 1; i <= n; ++i)
for (int j = 1; j <= m; ++j) {
mt2[i][j] = mt[i][j];
if (v[j] == 1)
mt2[i][j] = -mt[i][j];
}
solve();
return;
}
back(pos + 1, v);
v[pos + 1] = 1;
back(pos + 1, v);
return;
}
void back2(int pos, vector <int> v) {
if (pos == n) {
++comb;
for (int i = 1; i <= m; ++i)
v2[comb][i] = v[i];
return;
}
back2(pos + 1, v);
v[pos + 1] = 1;
back2(pos + 1, v);
return;
}
int main() {
fin >> n >> m;
for (int i = 1; i <= n; ++i)
for (int j = 1; j <= m; ++j)
fin >> mt[i][j];
vector <int> v(20);
back2(0, v);
back(0, v);
fout << rez;
return 0;
}