#include <stdio.h>
#include <stdlib.h>
void calc(int n, int m, int *s, int **mat, int *max_sum) {
int total = 0;
for (int i = 0; i < n; ++i) {
int lin = 0;
for (int j = 0; j < m; ++j)
lin += s[j] * mat[i][j];
if (lin < 0)
total -= lin;
else
total += lin;
}
if (total > *max_sum)
*max_sum = total;
}
void back(int k, int n, int m, int *s, int **mat, int *max_sum) {
if (k == m)
calc(n, m, s, mat, max_sum);
else {
s[k] = -1;
back(k + 1, n, m, s, mat, max_sum);
s[k] = 1;
back(k + 1, n, m, s, mat, max_sum);
}
}
int main() {
FILE *in = fopen("flip.in", "rt");
FILE *out = fopen("flip.out", "wt");
// citire n, m si alocare dinamica matrice
int n, m;
fscanf(in, "%d%d", &n, &m);
int **mat = (int **) calloc(n, sizeof(int *));
for (int i = 0; i < n; i++)
mat[i] = (int *) calloc(m, sizeof(int));
// citire matrice
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
fscanf(in, "%d", &mat[i][j]);
int *s = (int *) calloc(m, sizeof(int));
int max_sum = 0;
back(0, n, m, s, mat, &max_sum);
fprintf(out, "%d", max_sum);
// dezalocare memorie matrice
for (int i = 0; i < n; i++)
free(mat[i]);
free(mat);
free(s);
fclose(in);
fclose(out);
return 0;
}