Cod sursa(job #342994)

Utilizator RobybrasovRobert Hangu Robybrasov Data 24 august 2009 16:07:03
Problema Hashuri Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <cstdio>
#define MOD 666013

struct adr
{
    int val;
    adr *urm;
} *L[MOD];

void insert(int x)
{
    int nr=x%MOD;
    adr *p=new adr;
    p->val=x; p->urm=L[nr];
    L[nr]=p;
}

int query(int x)
{
    int nr=x%MOD;
    adr *p;
    for (p=L[nr]; p && p->val!=x; p=p->urm);

    return p!=NULL;
}

void erase(int x)
{
    int nr=x%MOD;
    adr *p,*t;
    for (p=L[nr]; p->urm && p->urm->val!=x; p=p->urm);
    t=p->urm;
    if (!t) p->urm=NULL, delete p;
    else p->urm=p->urm->urm, delete t;
}

int main()
{
    int n,op,x;
	freopen("hashuri.in","r",stdin);
	freopen("hashuri.out","w",stdout);
    scanf("%d",&n);
    while (n--)
    {
        scanf("%d%d",&op,&x);
        switch (op)
        {
            case 1:if (!query(x)) insert(x); break;
            case 2:if (query(x)) erase(x); break;
            case 3:printf("%d\n",query(x)); break;
        }
    }

    return 0;
}