Pagini recente » Cod sursa (job #436885) | Cod sursa (job #438169) | Cod sursa (job #702005) | Cod sursa (job #2524635) | Cod sursa (job #2581757)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
vector<vector<int>> flipMatrix (ifstream &f, int *n, int *m) {
vector<vector<int>> flipM;
f >> *n >> *m;
for (int i = 0; i < *n; ++i) {
vector<int> auxV;
for (int j = 0; j < *m; ++j) {
int aux;
f >> aux;
auxV.push_back(aux);
}
flipM.push_back(auxV);
}
// for (int i = 0; i < *n; ++i) {
// for (int j = 0; j < *m; ++j) {
// cout << flipM.at(i).at(j) << " ";
// }
// cout << endl;
// }
return flipM;
}
int sumLine(vector<vector<int>> matrix, int line, int collumn, int *n, int *m) {
if (line) {
int sum = 0;
for (int i = 0; i < *m; ++i) {
sum += matrix.at(line).at(i);
}
return sum;
}
if (collumn) {
int sum = 0;
for (int i = 0; i < *n; ++i) {
sum += matrix.at(i).at(collumn);
}
return sum;
}
return 0;
}
int sumMatrix(vector<vector<int>> matrix, int *n, int *m) {
int sum = 0;
for (int i = 0; i < *n; ++i) {
for (int j = 0; j< *m; ++j) {
sum += matrix.at(i).at(j);
}
}
return sum;
}
int maxMatrix(vector<vector<int>> matrix, int *n, int *m) {
int max = sumMatrix(matrix, n, m);
for (int i = 0; i < *n; ++i) {
int copyMax = max - 2 * sumLine(matrix, i, 0, n, m);
if (copyMax > max) {
max = copyMax;
}
}
for (int i = 0; i < *m; ++i) {
int copyMax = max - 2 * sumLine(matrix, 0, i, n, m);
if (copyMax > max) {
max = copyMax;
}
}
return max;
}
int main() {
ifstream f("flip.in");
ofstream g("flip.out");
int *n = (int*) malloc(sizeof(int) * 1);
int *m = (int*) malloc(sizeof(int) * 1);
vector<vector<int>> flipM = flipMatrix(f, n, m);
g << maxMatrix(flipM, n, m);
return 0;
}