Pagini recente » Cod sursa (job #600673) | Cod sursa (job #1952710) | Cod sursa (job #1452278) | Cod sursa (job #1902683) | Cod sursa (job #269954)
Cod sursa(job #269954)
#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;
}