Cod sursa(job #519483)
#include <stdio.h>
const int M=666013;
int N,c,x,i;
struct elem{
int inf;
elem *next;
} *H[M+5];
elem *p,*q;
int main()
{
freopen("hashuri.in","r",stdin);
freopen("hashuri.out","w",stdout);
scanf("%d",&N);
for(i=0;i<=M;i++) H[i]=NULL;
for(i=1;i<=N;i++)
{
scanf("%d %d",&c,&x);
for(p=H[x%M];p && p->inf!=x;p=p->next);
if(c==1 && p==NULL)
{
q=new elem;
q->inf=x; q->next=H[x%M];
H[x%M]=q;
continue;
}
if(c==2 && p!=NULL)
{
if(H[x%M]->inf==x) H[x%M]=H[x%M]->next;
else
{
q=p;
p=p->next;
delete(q);
}
continue;
}
if(c==3)
{
if(p==NULL) printf("0\n");
else printf("1\n");
}
}
}