Cod sursa(job #1370525)

Utilizator cldmeClaudiu Ion cldme Data 3 martie 2015 15:27:39
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include <cstdio>
using namespace std;
int const K=666013;
int const N=1000001;

int lst[K],val[N],urm[N],n;

void addNum(int x)
{
    int r = x%K,p;
    val[++n] = x;
    urm[n] = lst[r];
    lst[r] = n;
}

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

}

void printNum(int x)
{
    int r = x%K,p;
    p = lst[r];
    while(p != 0)
    {
        if(val[p] == x)
        {
            printf("1\n");
            return;
        }
        p = urm[p];
    }
    printf("0\n");
}

int main()
{
    int i,x,op,n;
    freopen("hashuri.in","r",stdin);
    freopen("hashuri.out","w",stdout);
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        scanf("%d %d",&op,&x);
        if(op == 1) addNum(x);
        if(op == 2) removeNum(x);
        if(op == 3) printNum(x);
    }
    return 0;
}