Pagini recente » Cod sursa (job #2513432) | Cod sursa (job #2472209) | Cod sursa (job #2389750) | Cod sursa (job #2723497) | Cod sursa (job #2434169)
#include <fstream>
int **t;
int n, m;
int sumLine(int line) {
int sum = 0;
for (int j = 0; j < m; j++) {
sum += t[line][j];
}
return sum;
}
int sumColumn(int column) {
int sum = 0;
for (int i = 0; i < n; i++) {
sum += t[i][column];
}
return sum;
}
void flipLine(int line) {
for (int j = 0; j < m; j++) {
t[line][j] *= -1;
}
}
void flipColumn(int column) {
for (int i = 0; i < n; i++) {
t[i][column] *= -1;
}
}
int sumPivot(int iPivot, int jPivot) {
return sumColumn(jPivot) + sumLine(iPivot) - 2 * t[iPivot][jPivot];
}
void flipPivot(int iPivot, int jPivot) {
flipLine(iPivot);
flipColumn(jPivot);
}
int main() {
std::ifstream fin("flip.in");
std::ofstream fout("flip.out");
fin >> n;
fin >> m;
t = new int*[n];
for (int i = 0; i < n; i++) {
t[i] = new int[m];
for (int j = 0; j < m; j++) {
fin >> t[i][j];
}
}
bool done = false;
while (!done) {
done = true;
for (int i = 0; i < n; i++) {
if (sumLine(i) < 0) {
done = false;
flipLine(i);
}
}
for (int j = 0; j < m; j++) {
if (sumColumn(j) < 0) {
done = false;
flipColumn(j);
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (sumPivot(i, j) < 0) {
done = false;
flipPivot(i, j);
}
}
}
}
int sum = 0;
for (int i = 0; i < n; i++) {
sum += sumLine(i);
}
fout << sum;
fout.flush();
return 0;
}