Cod sursa(job #353189)

Utilizator PavelRazvanPavel Razvan PavelRazvan Data 4 octombrie 2009 13:29:34
Problema Hashuri Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 1.13 kb
#include<stdio.h>
#define DIM 666013
struct nod
{
    int x;
    nod *urm;
} *lst[DIM];
int n;
void baga (int a,int b)
{
    nod *p;
    for(p=lst[a];p;p=p->urm)
        if(p->x==b)
            return ;
    p=new nod;
    p->x=b;
    p->urm=lst[a];
    lst[a]=p;
}
void sterge (short a,int b)
{
    nod *p,*q;
    if (!lst[b])
        return ;
	if (lst[b]->x==a)
    {
        p=lst[b];
        lst[b]=p->urm;
        delete p;
        return ;
    }
    for (p=lst[b], q=NULL; p; q=p, p=p->urm)
        if (p->x==a)
        {
			q->urm=p->urm;
			delete p;
            return;
        }
}

bool cauta (int a,int b)
{
    nod *p;
    for(p=lst[a];p;p=p->urm)
        if(p->x==b)
            return 1;
    return 0;
}

int main ()
{
    freopen("hashuri.in","r",stdin);
    freopen("hashuri.out","w",stdout);
    int i,q,x;
    scanf("%d",&n);
    for(i=1;i<=n;++i)
    {
        scanf("%d%d",&q,&x);
        if(q==1)
            baga (x%DIM,x);
        else if (q==2)
                sterge (x%DIM,x);
            else
                printf("%d\n",cauta (x%DIM,x));
    }
    return 0;
}