Pagini recente » Cod sursa (job #2561070) | Cod sursa (job #2204853) | Cod sursa (job #945517) | Cod sursa (job #516526) | Cod sursa (job #1502649)
#include<stdio.h>
int m, n, st[40];
long int v[20][20], copie[20][20], MAX;
void onoff() {
int i, j;
for (i = 0; i < n; i++) {
for (j = 0; j < m; j++) {
copie[i][j] = 0;
}
}
}
int suma() {
int s = 0, x, y;
for (x = 0; x < n; x++)
for (y = 0; y < m; y++) {
if (copie[x][y] == 1) s += -1 * v[x][y];
else s += v[x][y];
}
return s;
}
void flipline(int a) {
int x;
for (x = 0; x < m; x++) {
if (copie[a][x] == 0)copie[a][x] = 1;
else copie[a][x] = 0;
}
}
void flipcol(int a) {
int x;
for (x = 0; x < n; x++){
if (copie[x][a] == 0)copie[x][a] = 1;
else copie[x][a] = 0;
}
}
void maxim() {
int i, x, j;
onoff();
for (i = 0; i < n; i++)if (st[i] == 1)flipline(i);
for (j = n; j < m + n; j++)if (st[j] == 1)flipcol(j - n);
x = suma();
if (x > MAX) MAX = x;
}
void back(int p) {
int val;
for (val = 0; val < 2; val++) {
st[p] = val;
if (p == m + n - 1) maxim();
else back(p + 1);
}
}
int main() {
freopen("flip.in", "r", stdin);
freopen("flip.out", "w", stdout);
scanf("%d", &n);
scanf("%d", &m);
int i, j;
for (i = 0; i < n; i++) {
for (j = 0; j < m; j++) {
scanf("%d", &v[i][j]);
}
};
back(0);
printf("%d", MAX);
return 0;
}