Pagini recente » Cod sursa (job #1181174) | Cod sursa (job #2343946) | Cod sursa (job #2010606) | Cod sursa (job #1882420) | Cod sursa (job #1727848)
#include <fstream>
using namespace std;
short n, m;
inline void flipLine(int** a, int c) {
for (int j = 0; j < m; j++) {
a[c][j] *= -1;
}
}
inline void flipColumn(int** a, int c) {
for (int i = 0; i < n; i++) {
a[i][c] *= -1;
}
}
inline int sumOfLine(int** a, int c) {
int ret = 0;
for (int j = 0; j < m; j++) {
ret += a[c][j];
}
return ret;
}
inline int sumOfColumn(int** a, int c) {
int ret = 0;
for (int i = 0; i < n; i++) {
ret += a[i][c];
}
return ret;
}
inline int sum(int** a) {
int ret = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
ret += a[i][j];
}
}
return ret;
}
int main() {
// input
ifstream f("flip.in");
f >> n >> m;
int** a = new int*[n];
for (int i = 0; i < n; i++) {
a[i] = new int[m];
for (int j = 0; j < m; j++) {
f >> a[i][j];
}
}
f.close();
// solve
bool flips = true;
while (flips) {
flips = false;
// on lines
for (int i = 0; i < n; i++) {
if (sumOfLine(a, i) < 0) {
flipLine(a, i);
flips = true;
}
}
// on columns
for (int j = 0; j < m; j++) {
if (sumOfColumn(a, j) < 0) {
flipColumn(a, j);
flips = true;
}
}
}
// output
ofstream g("flip.out");
g << sum(a) << "\n";
g.close();
// deallocate
for (int i = 0; i < n; i++) {
delete[] a[i];
}
delete[] a;
return 0;
}