Cod sursa(job #3289899)

Utilizator pinzaruliviuPinzaru Liviu-Vasile pinzaruliviu Data 29 martie 2025 09:40:10
Problema Hashuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.26 kb
#include<fstream>
using namespace std;

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

const int NMAX=1000006, MOD=666013;
int val[NMAX], start[NMAX], urm[NMAX];
int nr;

bool exista(int x)
{
    int c=x%MOD;
    int p=start[c];
    while(p!=0 && val[p]!=x)
    {
        p=urm[p];
    }
    if(p!=0)
        return 1;
    else
        return 0;
}

void adaugam(int x)
{
    int c = x % MOD;
    if(exista(x))
    {
        return;
    }
    val[++nr] = x;
    urm[nr] = start[c];
    start[c] = nr;
}

void sterge(int x)
{
    int c = x % MOD, p = start[c];
    while(p != 0 and val[p] != x)
    {
        p = urm[p];
    }
    if(p != 0)
    {
        val[p] =  val[start[c]];
        start[c] = urm[start[c]];
    }
}

int main()
{
    int n;
    cin >> n;
    while(n--)
    {
        int tip, x;
        cin >> tip >> x;
        switch(tip)
        {
        case 1:
            adaugam(x);
            break;
        case 2:
            sterge(x);
            break;
        case 3:
            if(exista(x))
            {
                cout << 1 << "\n";
            }
            else{
                cout << 0 << "\n";
            }
            break;
        }
    }

    return 0;
}