Cod sursa(job #2461955)

Utilizator tacaTecuceanu Gabriel-Cristian taca Data 26 septembrie 2019 16:40:03
Problema Jocul Flip Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.85 kb
#include <fstream>
#include <stdlib.h>
#include <iostream>

//DATE:
std::ifstream f("flip.in");
std::ofstream g("flip.out");

int mat[17][17];
int n, m;

//FUNCTII:
void citireMatrice();
void sumeLinie(int& ln, int& sp, int& sn);
void sumeCol(int& col, int& sp, int& sn);
int sumaMat();

//void scrieMatrice();

int main() {
    citireMatrice();

    // schimbam val. linii:
    for (int i = 1; i <= n; i++) {
        int sumaPoz = 0;
        int sumaNeg = 0;
        sumeLinie(i, sumaPoz, sumaNeg);

        if(sumaNeg > sumaPoz)
            for (int j = 1; j <= m; j++)
                mat[i][j] = -(mat[i][j]);
    }

    // schimbam val. coloane:
    for (int j = 1; j <= m; j++) {
        int sumaPoz = 0;
        int sumaNeg = 0;
        sumeCol(j, sumaPoz, sumaNeg);

        if(sumaNeg > sumaPoz)
            for (int i = 1; i <= n; i++)
                mat[i][j] = -(mat[i][j]);
    }

    g << sumaMat();
}

void citireMatrice() {
    f >> n >> m;
    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= m; j++)
            f >> mat[i][j];
}
void sumeLinie(int& ln, int& sp, int& sn) {
    for (int i = 1; i <= m; i++) {
        if (mat[ln][i] > 0)
            sp += mat[ln][i];
        else
            sn += abs(mat[ln][i]);
    }
}
void sumeCol(int& col, int& sp, int& sn) {
    for (int i = 1; i <= n; i++) {
        if (mat[i][col] > 0)
            sp += mat[i][col];
        else
            sn += abs(mat[i][col]);
    }
}
int sumaMat() {
    int suma = 0;
    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= m; j++)
            suma += mat[i][j];
    return suma;
}


/*void scrieMatrice() {
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= m; j++)
            std::cout << mat[i][j] << "  ";
        std::cout << std::endl;
    }
    std::cin.get();
}
*/