Cod sursa(job #2195065)

Utilizator asunaAsuna Yuuki asuna Data 15 aprilie 2018 04:24:37
Problema Jocul Flip Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.95 kb
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

void readFile(short &m, short &n, int ** &matrix) {
    ifstream in;
    in.open("flip.in");

    if (in.fail()) {
        cerr << "Cannot open this file";
        exit(1);
    }

    in >> m;
    in >> n;

    if (m < 1 && n < 1 && m > 16 && n > 16) {
        cerr << "Wrong data format";
        exit(2);
    }

    matrix = new int *[m];
    for (int i = 0; i < m; ++i)
        matrix[i] = new int[n];

    for (int i = 0; i < m; i++) {
        for (int j = 0; j < n; j++) {
            in >> matrix[i][j];
        }
    }

    in.close();
}

void controlEdit(short &m, short &n, int ** &matrix) {
    // compute row sum
    for (int i = 0; i < m; i++) {
        int normalSum = 0;
        for (int j = 0; j < n; j++)
            normalSum += matrix[i][j];

        int reverseSum = 0;
        for (int j = 0; j < n; j++)
            reverseSum += -matrix[i][j];

        if (normalSum < reverseSum)
            for (int j = 0; j < n; j++)
                matrix[i][j] = -matrix[i][j];
    }

    // compute column sum
    for (int j = 0; j < n; j++) {
        int normalSum = 0;
        for (int i = 0; i < m; i++)
            normalSum += matrix[i][j];

        int reverseSum = 0;
        for (int i = 0; i < m; i++)
            reverseSum += -matrix[i][j];

        if (normalSum < reverseSum)
            for (int i = 0; i < m; i++)
                matrix[i][j] = -matrix[i][j];
    }
}

int getSum(short m, short n, int ** matrix) {
    int sum = 0;
    for (int i = 0; i < m; i++) {
        for (int j = 0; j < n; j++) {
            sum += matrix[i][j];
        }
    }
    return sum;
}

int main() {

    short m, n;
    int **matrix;

    readFile(m, n, matrix);
    controlEdit(m, n, matrix);

    ofstream out;
    out.open("flip.out");

    if(out.is_open()) {
        out << getSum(m, n, matrix);
    } else {
        cerr << "Cannot create and open file.";
        exit(3);
    }

    return 0;
}