Pagini recente » Cod sursa (job #2449910) | Cod sursa (job #845337) | Cod sursa (job #2512306) | Cod sursa (job #2944171) | Cod sursa (job #495913)
Cod sursa(job #495913)
#include <stdio.h>
long N,i,op,x,m;
struct list
{
long nod;
list *link;
}*H[1000000];
void addnum(long x)
{
list *p;
p=new list;
p->nod=x;
p->link=H[x%m];
H[x%m]=p;
}
void delnum(long x)
{
list *p,*q;
int ok;
p=H[x%m];
q=NULL;
while(p!=NULL)
{
if(p->nod==x)
{
ok=1;
break;
}
q=p;
p=p->link;
}
if(ok==1)
if(q!=NULL)
{
p=q->link->link;
q->link=p;
}
else
H[x%m]=p->link;
}
int solnum(long x)
{
list *p;
int ok=0;
p=H[x%m];
while(p!=NULL)
{
if(p->nod==x)
{
ok=1;
break;
}
p=p->link;
}
return ok;
}
int main()
{
freopen("hashuri.in","r",stdin);
freopen("hashuri.out","w",stdout);
scanf("%ld",&N);
m=999983;
for(i=1;i<=m;i++) H[i]=NULL;
for(i=1;i<=N;i++)
{
scanf("%ld%ld",&op,&x);
if(op==1)
if(solnum(x)==0) addnum(x);
if(op==2)
if(solnum(x)) delnum(x);
if(op==3) printf("%ld\n",solnum(x));
}
return 0;
}