Pagini recente » tema | Istoria paginii utilizator/petcumadalina | Istoria paginii runda/aaaa/clasament | tema | Cod sursa (job #2452116)
#include <iostream>
#include <fstream>
#define NMAX 16
int main() {
std::ifstream in;
std::ofstream out;
int N, M;
int matrix[NMAX][NMAX];
int matrix2[NMAX][NMAX];
int sum = 0, sum_poz = 0, sum_neg = 0, sum2 =0, sum_max =0;
in.open("flip.in");
in >> N;
in >> M;
out.open("flip.out");
for (int i = 0 ; i < N ; i++) {
sum_poz = sum_neg = 0;
for (int j = 0; j < M; j++) {
in >> matrix[i][j];
matrix2[i][j] = matrix[i][j];
if (matrix[i][j] > 0){
sum_poz += matrix[i][j];
} else {
sum_neg += matrix[i][j];
}
}
if ((0-sum_neg) > sum_poz) {
for(int j = 0; j < M; j++) {
matrix[i][j] = 0-matrix[i][j];
}
}
}
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
sum += matrix[i][j];
}
}
if (sum > sum_max) {
sum_max = sum;
}
for (int j = 0; j < M; j++) {
sum_poz = sum_neg = 0;
for (int i = 0; i < N; i++) {
if (matrix[i][j] > 0){
sum_poz += matrix[i][j];
} else {
sum_neg += matrix[i][j];
}
}
if ((0-sum_neg) > sum_poz){
for (int i = 0; i < N; i++) {
matrix[i][j] = 0 - matrix[i][j];
}
}
}
sum = 0;
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
sum += matrix[i][j];
}
}
if (sum > sum_max) {
sum_max = sum;
}
for (int j = 0 ; j < M ; j++) {
sum_poz = sum_neg = 0;
for (int i = 0; i < N; i++) {
in >> matrix2[i][j];
if (matrix2[i][j] > 0){
sum_poz += matrix2[i][j];
} else {
sum_neg += matrix2[i][j];
}
}
if ((0 - sum_neg) > sum_poz){
for(int i = 0; i < N; i++) {
matrix2[i][j] = 0 - matrix2[i][j];
}
}
}
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
sum2 += matrix[i][j];
}
}
if (sum2 > sum_max) {
sum_max = sum2;
}
for (int i = 0; i< N; i++) {
sum_poz = sum_neg = 0;
for (int j = 0; j< M; j++){
if (matrix2[i][j] > 0){
sum_poz += matrix2[i][j];
} else {
sum_neg += matrix2[i][j];
}
}
if ((0 - sum_neg) > sum_poz) {
for(int j = 0; j < M; j++) {
matrix2[i][j] = 0 - matrix2[i][j];
}
}
}
sum2 = 0;
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
sum2 += matrix[i][j];
}
}
if (sum2 > sum_max) {
sum_max = sum2;
}
out << sum_max;
in.close();
out.close();
return 0;
}