Pagini recente » Cod sursa (job #2388242) | Cod sursa (job #332622) | Cod sursa (job #1847630) | Cod sursa (job #2360996) | Cod sursa (job #2686293)
#include <stdio.h>
#include <stdlib.h>
#define MAXNM 16
#define MINVAL -1000000
int mat[MAXNM + 1][MAXNM][MAXNM];
int maxs = MINVAL * MAXNM * MAXNM;
void combinari(int tac, int ac, int n, int m){
int i, l, c, poz, neg, s;
s = 0;
for(c = 0; c < m; c++){
poz = 0;
neg = 0;
for(l = 0; l < n; l++){
mat[ac][l][c] = mat[tac][l][c];
if(l == (ac - 1)){
mat[ac][l][c] *= -1;
}
if(mat[ac][l][c] < 0){
neg += mat[ac][l][c];
}else{
poz += mat[ac][l][c];
}
}
neg *= -1;
if(poz < neg){
s += neg;
s -= poz;
}else{
s += poz;
s -= neg;
}
}
if(ac < n){
for(i = ac; i < n; i++){
combinari(ac, i + 1, n, m);
}
}
if(maxs < s){
maxs = s;
}
}
int main()
{
FILE *fin, *fout;
int n, m, l, c;
fin = fopen("flip.in", "r");
fscanf(fin, "%d%d", &n, &m);
for(l = 0; l < n; l++){
for(c = 0; c < m; c++){
fscanf(fin, "%d", &mat[0][l][c]);
}
}
fclose(fin);
combinari(0, 0, n, m);
fout = fopen("flip.out", "w");
fprintf(fout, "%d", maxs);
fclose(fout);
return 0;
}