Pagini recente » Cod sursa (job #2216928) | Cod sursa (job #2950659) | Cod sursa (job #652566) | Cod sursa (job #2124698) | Cod sursa (job #2832579)
#include <fstream>
int n, m;
int arr[16][16];
int max = 0;
std::ifstream in("flip.in");
std::ofstream out("flip.out");
void solve(int sum) {
if (sum > max) max = sum;
for (int i=0; i<n; i++) {
int s = 0;
for (int j=0; j<m; j++)
s += arr[i][j];
if (s < 0 && sum - 2*s >= max) {
for (int j=0; j<m; j++)
arr[i][j] *= -1;
solve(sum - 2*s);
for (int j=0; j<m; j++)
arr[i][j] *= -1;
}
}
for (int i=0; i<m; i++) {
int s = 0;
for (int j=0; j<n; j++)
s += arr[j][i];
if (s < 0 && sum - 2*s >= max) {
for (int j=0; j<n; j++)
arr[j][i] *= -1;
solve(sum - 2*s);
for (int j=0; j<n; j++)
arr[j][i] *= -1;
}
}
}
int main() {
in >> n >> m;
int sum = 0;
for (int i=0; i<n; i++)
for (int j=0; j<m; j++)
in >> arr[i][j],
sum += arr[i][j];
solve(sum);
out << max;
}