Pagini recente » Cod sursa (job #2627998) | Cod sursa (job #3235731) | Cod sursa (job #2864284) | Cod sursa (job #2780000) | Cod sursa (job #429815)
Cod sursa(job #429815)
#include <stdio.h>
const char *fin = "flip.in";
const char *fout = "flip.out";
int mat[20][20];
int m, n;
int max = -1000000;
inline void flipLine(const int l) {
for(int i = 0; i < m; ++i) {
mat[l][i] *= -1;
}
}
inline void flipCol(const int c) {
for(int i = 0; i < n; ++i) {
mat[i][c] *= -1;
}
}
void readData() {
FILE *f = fopen(fin, "rt");
fscanf(f, "%d %d", &n, &m);
for (int i = 0; i < n; ++i) {
for (int j = 0; j < m; ++j) {
fscanf(f, "%d", &mat[i][j]);
}
}
}
void greedy() {
int sum = 0, ps = 0;
for (int i = 0; i < m; ++i) {
ps = 0;
for (int j = 0; j < n; ++j) {
ps += mat[j][i];
}
sum += (ps > 0) ? ps : -ps;
}
if (sum > max) {
max = sum;
}
}
void back(const int l) {
if (l == n) {
greedy();
} else {
back(l + 1);
flipLine(l);
back(l + 1);
flipLine(l);
}
}
void writeData() {
FILE *f = fopen(fout, "wt");
fprintf(f, "%d", max);
fclose(f);
}
int main() {
readData();
back(0);
writeData();
return 0;
}