Cod sursa(job #3140615)

Utilizator Benten3000Alexandru Benteu Benten3000 Data 7 iulie 2023 17:54:06
Problema Jocul Flip Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.95 kb
#include <fstream>
using namespace std;

ifstream fin("flip.in");
ofstream fout("flip.out");

int ** citire(int, int);
void config1(int **, int, int);
void config2(int **, int, int);
int suma(int **, int, int);

int main() {
    int n, m;
    fin >> n >> m;
    int ** v = citire(n, m);
    if (n >= m) config1(v, n, m);
    else config2(v, n, m);
    fout << suma(v, n, m);
}

int ** citire(int n, int m) {
    int ** v = new int * [n];
    for (int i = 0; i < n; ++i) {
        v[i] = new int[m];
        for (int j = 0; j < m; ++j)
            fin >> v[i][j];
    }
    return v;
}

void config1(int ** v, int n, int m) {
    for (int i = 0; i < n; ++i) {
        int s1 = 0, s2 = 0;
        for (int j = 0; j < m; ++j) {
            s1 += v[i][j];
            s2 += ((-1)*v[i][j]);
        }
        if (s2 > s1)
            for (int j = 0; j < m; ++j)
                v[i][j] *= (-1);
    }

    for (int j = 0; j < m; ++j) {
        int s1 = 0, s2 = 0;
        for (int i = 0; i < n; ++i) {
            s1 += v[i][j];
            s2 += ((-1)*v[i][j]);
        }
        if (s2 > s1)
            for (int i = 0; i < n; ++i)
                v[i][j] *= (-1);
    }
}

void config2(int ** v, int n, int m) {
    for (int j = 0; j < m; ++j) {
        int s1 = 0, s2 = 0;
        for (int i = 0; i < n; ++i) {
            s1 += v[i][j];
            s2 += ((-1)*v[i][j]);
        }
        if (s2 > s1)
            for (int i = 0; i < n; ++i)
                v[i][j] *= (-1);
    }

    for (int i = 0; i < n; ++i) {
        int s1 = 0, s2 = 0;
        for (int j = 0; j < m; ++j) {
            s1 += v[i][j];
            s2 += ((-1)*v[i][j]);
        }
        if (s2 > s1)
            for (int j = 0; j < m; ++j)
                v[i][j] *= (-1);
    }
}

int suma(int ** v, int n, int m) {
    int s = 0;
    for (int i = 0; i < n; ++i)
        for (int j = 0; j < m; ++j)
            s += v[i][j];
    return s;
}