Cod sursa(job #2775444)

Utilizator MariusAndrei16Pricope Marius MariusAndrei16 Data 15 septembrie 2021 20:01:40
Problema Jocul Flip Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.85 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int n, m;
int **tabla;
int *freq_linie;
int *freq_coloana;

void Citire()
{
    in >> n >> m;
    tabla = new int*[n];
    for(int i = 0; i < n; ++i) {
        tabla[i] = new int[m];
    }

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

void Comutare()
{
    int suma_initiala = 0;
    int suma_comutata = 0;

    freq_linie = new int[n];
    freq_coloana = new int[m];

    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            suma_initiala += tabla[i][j];
            suma_comutata -= tabla[i][j];
        } 
        if(suma_initiala > suma_comutata)
            freq_linie[i] = 1;
        else {
            freq_linie[i] = -1;
        }
        suma_initiala = 0;
        suma_comutata = 0; 
    }


    suma_initiala = 0;
    suma_comutata = 0;

     for (int j = 0; j < m; j++){
        for (int i = 0; i < n; i++) {
            suma_initiala += tabla[i][j];
            suma_comutata -= tabla[i][j];  
        }  
        if(suma_initiala > suma_comutata)
                freq_coloana[j] = 1;
            else {
                freq_coloana[j] = -1;
        }
        suma_initiala = 0;
        suma_comutata = 0;
    }
    
}

void Afisare()
{
    int suma_finala = 0;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            tabla[i][j] *= freq_linie[i];
        }
    }

     for (int j = 0; j < m; j++){
         for (int i = 0; i < n; i++){
            tabla[i][j] *= freq_coloana[j];
            suma_finala += tabla[i][j];
        }
    }

    out << suma_finala;
}

int main()
{
    Citire();
    Comutare();
    Afisare();
    return 0;
}