Pagini recente » Cod sursa (job #2431847) | Cod sursa (job #581739) | Cod sursa (job #2773249) | Cod sursa (job #2333992) | Cod sursa (job #806020)
Cod sursa(job #806020)
#include <iostream>
#include <fstream>
#include <cstdio>
#define MOD 66013
struct nod
{
int val;
nod *urm;
} * a[MOD];
void add(int x)
{
int y=x%MOD;
if(a[y]==NULL)
{
a[y]=new nod;
a[y]->val=x;
a[y]->urm=NULL;
return;
}
nod *p=a[y];
while(p->urm)
{
if(p->val==x)return;
p=p->urm;
}
if(p->val==x)return;
p->urm=new nod;
p->urm->val=x;
p->urm->urm=NULL;
}
int caut(int x)
{
int y=x%MOD;
if(a[y]==NULL)return 0;
if(a[y]->val==x)return 1;
nod *p=a[y];
while(p->urm)
{
p=p->urm;
if(p->val==x)return 1;
}
return 0;
}
void del(int x)
{
int y=x%MOD;
if(a[y]==NULL)return;
if(a[y]->val==x) {a[y]=NULL;return;}
nod *p=a[y];
nod *q=p->urm;
if(p->urm==NULL)return;
else
while(q->val!=x && p->urm!=NULL)
{
p=p->urm;
q=p->urm;
}
if(q!=NULL && q->val==x)
{ if(q->urm==NULL)
{
delete q;
return;
}
else {
p->urm=q->urm;
delete q;
return;
}
}
}
int main()
{
freopen("hashuri.in","r",stdin);
freopen("hashuri.out","w",stdout);
int n,c,x;
scanf("%d",&n);
while(n--)
{
scanf("%d %d",&c,&x);
if(c==1)add(x);
else if(c==2) del(x);
else
{
printf("%d",caut(x));
printf("\n");
}
}
}