Cod sursa(job #269954)

Utilizator mihai0110Bivol Mihai mihai0110 Data 3 martie 2009 17:03:02
Problema Hashuri Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.06 kb
#include<stdio.h>
#define MOD 666013

struct nod{int x;nod *urm;};
nod *v[MOD+1];
int n,x,op;

int find(int x,int rest)
{
    nod *q;
    for(q=v[rest];q;q=q->urm)
        if(q->x==x)
            return 1;
    return 0;
}

void add(int x,int rest)
{
    nod *q=new nod;
    q->x=x;
    q->urm=v[rest];
    v[rest]=q;
}

void remove(int x,int rest)
{
    nod *q,*s;
    if(v[rest]){
    if(v[rest]->x==x)
    {
        s=v[rest];
        v[rest]=s->urm;
        delete s;
    }
    else
    {
        for(q=v[rest];q->urm;q=q->urm)
        if(q->urm->x==x)
        {
            s=q->urm;
            q->urm=q->urm->urm;
            delete s;
        }
    }
    }
}

int main(void)
{
    freopen("hash.in","r",stdin);
    freopen("hash.out","w",stdout);
    scanf("%d",&n);
    while(n--)
    {
        scanf("%d%d",&op,&x);
        if(op==1 && !find(x,x%MOD))
            add(x,x%MOD);
        if(op==2)
            remove(x,x%MOD);
        if(op==3)
            printf("%d\n",find(x,x%MOD));
    }
    return 0;
}