Pagini recente » Cod sursa (job #2797266) | Cod sursa (job #1959640) | Cod sursa (job #1379866) | Cod sursa (job #478994) | Cod sursa (job #3265595)
#include <fstream>
#include <vector>
#include <algorithm>
#include <climits>
using namespace std;
ifstream fin("flip.in");
ofstream fout("flip.out");
int n, m, a[16][16], smax = INT_MIN;
void suma(vector<bool>& r, vector<bool>& c) {
int s = 0;
for (int i = 0; i < n; ++i) {
for (int j = 0; j < m; ++j) {
int v = a[i][j];
int flip = (r[i] ? 1 : 0) + (c[j] ? 1 : 0);
if (flip % 2 == 1) v = -v;
s += v;
}
}
smax = max(smax, s);
}
void rez(int p, vector<bool>& r, vector<bool>& c) {
if (p == n + m) {
suma(r, c);
return;
}
rez(p + 1, r, c);
if (p < n) {
r[p] = !r[p];
rez(p + 1, r, c);
r[p] = !r[p];
}
else {
c[p - n] = !c[p - n];
rez(p + 1, r, c);
c[p - n] = !c[p - n];
}
}
int main() {
fin >> n >> m;
for (int i = 0; i < n; ++i)
for (int j = 0; j < m; ++j)
fin >> a[i][j];
vector<bool> r(n, false), c(n, false);
rez(0, r, c);
fout << smax;
}