Cod sursa(job #2278714)

Utilizator Tavi44Grosu Octavian-Alexandru Tavi44 Data 8 noiembrie 2018 14:52:50
Problema Jocul Flip Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.63 kb
#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
long long calcSum(vector<vector<int>> x) {
    long long sum = 0;
    int length = x.size(), length2;
    for(int i = 0; i < length; ++i) {
        length2 = x[i].size();
        for(int j = 0; j < length2; ++j)
            sum += x[i][j];
    }
    return sum;
}
void reverseLine(vector<vector<int>> &x, int line) {
    int length = x[line].size();
    for(int j = 0; j < length; ++j)
        x[line][j] *= -1;
}
void reverseCol(vector<vector<int>> &x, int col) {
    int length = x.size();
    for(int i = 0; i < length; ++i)
        x[i][col] *= -1;
}
int sumCol(vector<vector<int>> &x, int col) {
    int length = x.size();
    int sum = 0;
    for(int i = 0; i < length; ++i)
        sum += x[i][col];
    return sum;
}
int sumLine(vector<vector<int>> &x, int line) {
    int length = x[line].size();
    int sum = 0;
    for(int i = 0; i < length; ++i)
        sum += x[line][i];
    return sum;
}
int main()
{
    freopen("flip.in", "r", stdin);
    freopen("flip.out", "w", stdout);
    int n, m;
    cin >> n >> m;
    vector<vector<int>> x(n, vector<int>(m));
    for (int i = 0; i < n; ++i) {
        for(int j = 0; j < m; ++j)
            cin >> x[i][j];
    }
    for(int k = 0; k < 2; ++k) {
        for(int i = 0; i < n; ++i) {
            for(int j = 0; j < m; ++j) {
                if(sumCol(x, j) < 0) {
                    reverseCol(x, j);
                }
                if(sumLine(x, i) < 0)
                    reverseLine(x, i);
            }
        }
    }
    cout << calcSum(x);
    return 0;
}