Cod sursa(job #2698485)

Utilizator Albert_GAlbert G Albert_G Data 22 ianuarie 2021 11:53:31
Problema Hashuri Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.05 kb
#include <iostream>

using namespace std;

//ifstream in("");
//ofstream out("");

constexpr int N = 1e6+1,MOD = 666019;
int v[N],urm[N],lst[MOD],nr=0;

void adaugare(int x)
{
    int rest = x%MOD;
    v[++nr]=x;
    urm[nr]=lst[rest];
    lst[rest]=nr;
}

void stergere(int x)
{
    int rest = x%MOD,p = lst[rest];
    while(p!=0 && v[p]!=x)
    {
        p = urm[p];
    }
    if(p!=0)
    {
        swap(v[p],v[lst[rest]]);
        lst[rest]=urm[lst[rest]];
    }
}

bool gasire(int x)
{
    int rest = x%MOD,p=lst[rest];
    while(p!=0)
    {
        if(v[p]==x)
        {
            return 1;
        }
        p=urm[p];
    }
    return 0;
}

int main()
{
    int n;
    cin>>n;
    for(int i=0;i<n;++i)
    {
        int op,x;
        cin>>op>>x;
        switch (op)
        {
        case 1:
            adaugare(x);
            break;
        case 2:
            stergere(x);
            break;
        case 3:
            cout<<gasire(x)<<'\n';
            break;
        }
    }
    return 0;
}