Pagini recente » Cod sursa (job #114410) | Cod sursa (job #81824) | Cod sursa (job #2950512) | Cod sursa (job #1934569) | Cod sursa (job #1424033)
#include <stdio.h>
#define MAX_N 16
int a[MAX_N][MAX_N];
int main(void) {
FILE *f;
int n, m;
int maxSum;
f = fopen("flip.in", "r");
fscanf(f, "%d%d", &n, &m);
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
fscanf(f, "%d", &a[i][j]);
}
}
fclose(f);
maxSum = 0;
for (int back = (1 << m) - 1; back >= 0; back--) {
int sumPattern = 0;
for (int i = 0; i < n; i++) {
int sum = 0;
for (int j = 0; j < m; j++) {
if (back & (1 << j)) {
sum += a[i][j];
} else {
sum -= a[i][j];
}
}
(sum >= 0) ? sumPattern += sum : sumPattern -= sum; // schimb semnul liniei in cazul in care este negativa
}
if (sumPattern > maxSum) {
maxSum = sumPattern;
}
}
f = fopen("flip.out", "w");
fprintf(f, "%d\n", maxSum);
fclose(f);
return 0;
}