Cod sursa(job #1370591)

Utilizator stefanlaculeanuLaculeanu Stefan stefanlaculeanu Data 3 martie 2015 15:57:54
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.09 kb
#include <iostream>
#include <fstream>

using namespace std;

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

const int k=666013;

int lst[1000005],val[1000005],urm[1000005],n,nr;

void adauga(int x)
{
    int r=x%k;
    val[++nr]=x;
    urm[nr]=lst[r];
    lst[r]=nr;
}

void sterge(int x)
{
    int r=x%k,p;
    p=lst[r];
    if(x==val[p])
    {
        lst[r]=urm[lst[r]];
        return;
    }
    while(urm[p]!=0&&val[urm[p]]!=x)
    {
        p=urm[p];
    }
    if(urm[p]!=0)
        urm[p]=urm[urm[p]];
}

int cauta(int x)
{
    int r=x%k,p;
    p=lst[r];
    while(p!=0)
    {
        if(val[p]==x)
            return 1;
        p=urm[p];
    }
    return 0;
}

int main()
{
    int t,a,b;
    in>>n;
    for(int i=1;i<=n;i++)
    {
        int t=0;
        in>>a>>b;
        if(a==1)
        {
            adauga(b);
        }
        if(a==2)
        {
            sterge(b);
        }
        if(a==3)
        {
            t=cauta(b);
            if(t==1)
            {
                out<<1<<'\n';
            }
            else
                out<<0<<'\n';
        }
    }
    return 0;
}