Cod sursa(job #2809330)

Utilizator P1zd0SuntBetoAlbert Beto P1zd0SuntBeto Data 26 noiembrie 2021 18:02:51
Problema Jocul Flip Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.29 kb
#include <iostream>
#include<fstream>
using namespace std;
ifstream fin("flip.in");
ofstream fout("flip.out");
int N,M,m[20][20],minim;

void modifica()
{
    minim = 0;
    // Scoatem primul minim
    for(int i=0; i<N; i++)
        minim += m[i][0];
    // Aflam celelalte sume
    int poz = 0;

    // verifica randuri
    for(int i=0; i<N; i++){
        int suma = 0;
        for(int j=0; j<M; j++)
            suma += m[i][j];
        if(suma < minim){
            poz = i;
            minim = suma;
        }
    }

    // verifica coloane
    for(int i=0; i<M; i++){
        int suma = 0;
        for(int j=0; j<N; j++)
            suma += m[j][i];
        if(suma < minim){
            poz = N+i;
            minim = suma;
        }
    }

    // Comutam matricea
    if(minim < 0){
        if(poz < N)
            for(int i=0;i<M;i++)
                m[poz][i] *= -1;
        else
            for(int i=0;i<N;i++)
                m[i][poz-N] *= -1;
    modifica();
    }
}

int main()
{
    fin >> N >> M;
    for(int i=0; i<N; i++)
        for(int j=0; j<M; j++)
            fin >> m[i][j];
    modifica();
    minim = 0;
    for(int i=0; i<N; i++)
        for(int j=0; j<M; j++)
            minim += m[i][j];
    fout << minim;
    return 0;
}