Cod sursa(job #2843405)

Utilizator Catalinu23Gavrila Catalin Catalinu23 Data 2 februarie 2022 13:40:59
Problema Balanta Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.92 kb
#include <bits/stdc++.h>
using namespace std;

ifstream fin("balanta.in");
ofstream fout("balanta.out");

int n, m, p1, nr1;
struct q
{
    int k;
    int r;
    vector<int> v1;
    vector<int> v2;
};
q Q[1030];
unordered_map<int, bool> M;

int main()
{
    fin>>n>>m;
    for(int i=1; i<=m; i++)
    {
        fin>>Q[i].k;
        for(int j=1; j<=Q[i].k; j++)
        {
            int x;
            fin>>x;
            Q[i].v1.push_back(x);
        }
        for(int j=1; j<=Q[i].k; j++)
        {
            int x;
            fin>>x;
            Q[i].v2.push_back(x);
        }
        fin>>Q[i].r;
    }
    // REZOLVAM DACA E MAI GREA BILA
    for(int i=1; i<=n; i++)
        M[i] = 1;
    for(int i=1; i<=m; i++)
    {
        if(Q[i].r == 0)
        {
            for(auto it: Q[i].v1)
                M[it] = 0;
            for(auto it: Q[i].v2)
                M[it] = 0;
        }
        else if(Q[i].r == 1)
            for(auto it: Q[i].v1)
                M[it] = 0;
        else if(Q[i].r == 2)
            for(auto it: Q[i].v2)
                M[it] = 0;
    }
    for(int i=1; i<=n; i++)
        if(M[i] == 1)
            p1 = i, nr1++;
    if(nr1 == 1)
    {
        fout<<p1;
        return 0;
    }
    p1 = nr1 = 0;
    // REZOLVAM DACA E MAI USOARA BILA
    for(int i=1; i<=n; i++)
        M[i] = 1;
    for(int i=1; i<=m; i++)
    {
        if(Q[i].r == 0)
        {
            for(auto it: Q[i].v1)
                M[it] = 0;
            for(auto it: Q[i].v2)
                M[it] = 0;
        }
        else if(Q[i].r == 1)
            for(auto it: Q[i].v2)
                M[it] = 0;
        else if(Q[i].r == 2)
            for(auto it: Q[i].v1)
                M[it] = 0;
    }for(int i=1; i<=n; i++)
        if(M[i] == 1)
            p1 = i, nr1++;
    if(nr1 == 1)
    {
        fout<<p1;
        return 0;
    }
    fout<<0;
    return 0;
}