Cod sursa(job #3177070)

Utilizator unomMirel Costel unom Data 28 noiembrie 2023 14:07:40
Problema Balanta Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 2.24 kb
#include <fstream>
using namespace std;

ifstream cin ("balanta.in");
ofstream cout ("balanta.out");

bool eliminat[2][1025];

int main ()
{
    int numar_monede , incercari;
    cin >> numar_monede >> incercari;

    for (int eliminare = 1 ; eliminare <= incercari ; eliminare++)
    {
        int lungime;
        cin >> lungime;

        int multime[1025];
        for (int indice = 1 ; indice <= numar_monede ; indice++)
            multime[indice] = 0;

        for (int indice_1 = 1 , valoare ; indice_1 <= 2 ; indice_1++)
            for (int indice_2 = 1 ; indice_2 <= lungime ; indice_2++)
                { cin >> valoare; multime[valoare] = indice_1; }

        int sens;
        cin >> sens;

        switch (sens)
        {
            case 0:
                for (int indice = 1 ; indice <= numar_monede ; indice++)
                    if (multime[indice])
                    {
                        if (!eliminat[0][indice]) eliminat[0][indice] = true;
                        if (!eliminat[1][indice]) eliminat[1][indice] = true;
                    }
            break;

            case 1:
                for (int indice = 1 ; indice <= numar_monede ; indice++)
                {
                    if (multime[indice] != 1 && !eliminat[0][indice]) eliminat[0][indice] = true;
                    if (multime[indice] != 2 && !eliminat[1][indice]) eliminat[1][indice] = true;
                }
            break;

            case 2:
                for (int indice = 1 ; indice <= numar_monede ; indice++)
                {
                    if (multime[indice] != 2 && !eliminat[0][indice]) eliminat[0][indice] = true;
                    if (multime[indice] != 1 && !eliminat[1][indice]) eliminat[1][indice] = true;
                }
            break;
        }
    }

    int falsificat = 0;
    for (int indice = 1 ; indice <= numar_monede ; indice++)
        if (!eliminat[0][indice] || !eliminat[1][indice])
        {
            if (falsificat)
            {
                cout << '0';
                cout.close(); cin.close();
                return 0;
            }

            falsificat = indice;
        }

    cout << falsificat;
    cout.close(); cin.close();
    return 0;
}