Pagini recente » Cod sursa (job #1542226) | Cod sursa (job #2310003) | Cod sursa (job #1214212) | Cod sursa (job #2741042) | Cod sursa (job #1434142)
#include <stdio.h>
#include <stdlib.h>
void bkt_l(long *suma_max, int **m, int k, int *l, int N, int M) {
int i;
for(i = 0;i < 2;i++) {
l[k] = i;
if(k == N-1) {
int j, p;
long suma = 0;
for(j = 0;j < M;j++) {
long s = 0;
for(p = 0;p < N;p++) {
if(l[p] == 0)
s = s + m[p][j];
else
s = s - m[p][j];
}
if(s < 0)
suma = suma - s;
else
suma = suma + s;
}
if(suma > *suma_max)
*suma_max = suma;
}
else {
bkt_l(suma_max, m, k+1, l, N, M);
}
}
}
int main() {
FILE *f1 = fopen("flip.in", "r");
FILE *f2 = fopen("flip.out", "w");
int N, M;
fscanf(f1, "%d%d", &N, &M);
int i, j;
int **m = (int **) malloc (N * sizeof(int*));
for (i = 0; i < N; i++) {
m[i] = (int *) malloc (M *sizeof(int));
}
for(i = 0;i < N;i++)
for(j = 0;j < M;j++)
fscanf(f1, "%d", &m[i][j]);
long suma_max = -1000000;
int *l = (int *) malloc (N * sizeof(int));
bkt_l(&suma_max, m, 0, l, N, M);
fprintf(f2, "%ld\n", suma_max);
fclose(f1);
fclose(f2);
return 0;
}