Cod sursa(job #2698488)

Utilizator Albert_GAlbert G Albert_G Data 22 ianuarie 2021 11:54:50
Problema Hashuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.07 kb
#include <fstream>

using namespace std;

ifstream cin("hashuri.in");
ofstream cout("hashuri.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;
}