Pagini recente » Cod sursa (job #1848759) | Cod sursa (job #3147014) | Cod sursa (job #3247348) | Cod sursa (job #2111176) | Cod sursa (job #867189)
Cod sursa(job #867189)
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int n, m, **mat;
unsigned int i, j, k, l;
int max = 0;
freopen("flip.in", "r", stdin);
freopen("flip.out", "w", stdout);
scanf("%d %d", &n, &m);
mat = malloc((n + 1) * sizeof(*mat));
for (i = 0; i < n; i ++) {
mat[i] = malloc((m + 1) * sizeof(*mat[i]));
}
for (i = 0; i < n; i ++) {
for (j = 0; j < m; j ++) {
scanf("%d", &mat[i][j]);
}
}
for (i = 0; i <= (1 << n) - 1; i ++)
{
int sum = 0;
for (j = 0; j < n; j ++) {
int flip_line = i & (1 << j) ? 1 : 0;
for (k = 0; k < m; k ++) {
int flip_col = 0, col_sum = 0;
for (l = 0.; l < n; l ++) {
if (l == j && flip_line) {
col_sum -= mat[l][k];
} else {
col_sum += mat[l][k];
}
}
if (col_sum < 0) {
flip_col = 1;
}
if (flip_col ^ flip_line) {
sum -= mat[j][k];
} else {
sum += mat[j][k];
}
}
}
if (sum > max)
max = sum;
}
printf("%d\n", max);
return 0;
}