Pagini recente » Cod sursa (job #2085245) | Cod sursa (job #1656971) | Cod sursa (job #2483398) | Cod sursa (job #1656988) | Cod sursa (job #2085227)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <climits>
#include <cmath>
using namespace std;
int n, m;
int *mat;
int *rows;
int *cols;
bool r;
int mm = -1;
int total = 0;
void nullify() {
for (int i = 0; i < n; i++) {
rows[i] = 1;
}
for (int i = 0; i < m; i++) {
cols[i] = 1;
}
}
void be() {
ifstream f("flip.in");
f >> n >> m;
mat = new int[n * m];
for (int i = 0; i < n * m; i++) {
f >> mat[i];
}
rows = new int[n];
cols = new int[m];
f.close();
}
int tot() {
int tot = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
tot += mat[i] * rows[i] * cols[j];
}
}
return tot;
}
bool inc(int *v, int n) {
int index = 0;
while (v[index] == -1 && index < n) {
v[index] = 1;
index++;
}
if (index < n) {
v[index] = -1;
}
return index >= n;
}
void bt(int c) {
if (c == pow(2, n * m)) {
} else {
int val = tot();
if (val > mm) {
mm = val;
}
if (inc(rows, n)) {
inc(cols, m);
}
bt(c+1);
}
}
void megold() {
nullify();
bt(1);
}
void ki() {
ofstream g("flip.out");
g << mm;
g.close();
}
int main() {
be();
megold();
ki();
}