Cod sursa(job #1443564)

Utilizator davidtimofDavid Timofanovici davidtimof Data 28 mai 2015 09:51:38
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include <fstream>
using namespace std;

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

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

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

bool cauta(int x)
{
    int p=lst[x%M];
    while(p)
    {
        if(val[p]==x)
            return true;
        p=urm[p];
    }
    return false;
}

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

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