Pagini recente » Cod sursa (job #2470281) | Monitorul de evaluare | Cod sursa (job #385173) | Cod sursa (job #1656196) | Cod sursa (job #384842)
Cod sursa(job #384842)
#include <stdio.h>
FILE *fin, *fout;
#define max_n 32
#define max_m 32
int n, m, mat[max_n][max_m], tmp[max_n][max_m];
int main(void){
// idei preluate din rez lui fluffy
int i, j, v, s, tmp_s;
int sum_min = -256000000;
//deschide fisierele
fin = fopen("flip.in", "rt");
fout = fopen("flip.out", "wt");
// citeste datele de intrare
fscanf(fin, "%d%d", &n, &m);
for (i = 0; i < n; i++)
for (j = 0; j < m; j++)
fscanf(fin, "%d", &mat[i][j]);
// pt. toate variantele
for (v = 0; v < (1 << n); v++){
// construiesc matricea temporara cu suma minima pe coloane
for (i = 0; i < n; i++)
for (j = 0; j < m; j++){
if ((1 << i) & v)
tmp[i][j] = mat[i][j];
else
tmp[i][j] = - mat[i][j];
}
for (j = 1; j < m; j++){
s = 0;
for (i = 0; i < n; i++)
s += tmp[i][j];
if (s < 0){
for (i = 0; i < n; i++)
tmp[i][j] = -tmp[i][j];
}
}
// calculez suma elementelor si compar
tmp_s = 0;
for (i = 0; i < n; i++)
for (j = 0; j < m; j++)
tmp_s += tmp[i][j];
if (tmp_s > sum_min)
sum_min = tmp_s;
}
// afisez rezultate
fprintf(fout, "%d\n", sum_min);
// inchid fisiere
fclose(fin);
fclose(fout);
return 0;
}