Cod sursa(job #2580876)

Utilizator AndreeaGherghescuAndreea Gherghescu AndreeaGherghescu Data 14 martie 2020 12:15:31
Problema Hashuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.26 kb
#include <iostream>
#include <fstream>

using namespace std;

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

const int N=1000001;
const int K=666019;
int lst[N],urm[N],val[N],nr;

bool apartine (int x)
{
    int c=x%K;
    for (int p=lst[c];p!=0;p=urm[p])
    {
        if (val[p]==x)
        {
            return true;
        }
    }
    return false;
}
void adauga (int x)
{
    if (apartine(x))
        return;
    int c=x%K;
    val[++nr]=x;
    urm[nr]=lst[c];
    lst[c]=nr;
}
void sterge (int x)
{
    int c=x%K;
    if (!apartine(x)) return;
    for (int p=lst[c];p!=0;p=urm[p])
    {
        if (val[p]==x)
        {
            val[p]=-1;
        }
    }
}
bool fnd (int x)
{
    int c=x%K;
    for (int p=lst[c];p!=0;p=urm[p])
    {
        if (val[p]==x)
            return 1;
    }
    return 0;
}
int main()
{
    int n,x,y;
    in>>n;
    for (int i=1;i<=n;i++)
    {
        in>>x>>y;
        if (x==1)
        {
            adauga (y);
            continue;
        }
        else if (x==2)
        {
            sterge(y);
            continue;
        }
        else
        {
            if (fnd(y)) out<<1<<'\n';
            else out<<0<<'\n';
        }
    }
    return 0;
}