Pagini recente » Cod sursa (job #961074) | Cod sursa (job #2494673) | Cod sursa (job #1330436) | Cod sursa (job #2307142) | Cod sursa (job #249158)
Cod sursa(job #249158)
#include <stdio.h>
#define SUM table[16][16]
void reverseLine (long table[17][17], int i, int j, int m) {
int ii, jj;
for (jj = 0; jj < m; jj++) {
table[i][jj] = 0 - table[i][jj];
}
}
void reverseColumn (long table[17][17], int i, int j, int n) {
int ii, jj;
for (ii = 0; ii < n; ii++) {
table[ii][j] = 0 - table[ii][j];
}
}
int main (int argc, char ** argv) {
FILE *fileIN, *fileOUT;
int n, m;
int i, j;
long table[17][17];
long sum = 0;
int change = 0;
fileIN = fopen("flip.in", "r");
fscanf(fileIN, "%d", &n);
fscanf(fileIN, "%d", &m);
for (i = 0; i < n; i++) table[i][16] = 0;
for (j = 0; j < n; j++) table[16][j] = 0;
SUM = 0;
for (i = 0; i < n; i++) {
for (j = 0; j < m; j++) {
fscanf(fileIN, "%ld", &table[i][j]);
SUM += table[i][j];
table[i][16] += table[i][j];
table[16][j] += table[i][j];
}
}
fclose(fileIN);
change = 1;
while (change != 0) {
change = 0;
for (i = 0; i < n; i++) {
for (j = 0; j < m; j++) {
if ((table[i][16] + table[16][j] - table[i][j]) < 0) {
SUM -= table[i][16];
table[i][16] -= table[i][j];
table[i][16] *= -1;
table[i][16] += table[i][j];
SUM += table[i][16];
SUM -= table[16][j];
table[16][j] -= table[i][j];
table[16][j] *= -1;
table[16][j] += table[i][j];
SUM += table[16][j];
reverseLine(table, i, j, m);
reverseColumn(table, i, j, n);
change = 1;
} else if (table[i][16] < 0) {
SUM -= table[i][16];
table[i][16] *= -1;
SUM += table[i][16];
reverseLine(table, i, j, m);
change = 1;
} else if (table[16][j] < 0) {
SUM -= table[16][j];
table[16][j] *= -1;
SUM += table[16][j];
reverseColumn(table, i, j, n);
change = 1;
}
}
}
}
fileOUT = fopen("flip.out", "w");
fprintf(fileOUT, "%ld", SUM);
fclose(fileOUT);
return 0;
}