Pagini recente » Cod sursa (job #2166246) | Cod sursa (job #354163) | Cod sursa (job #3221016) | Cod sursa (job #2845410) | Cod sursa (job #526426)
Cod sursa(job #526426)
#include<stdio.h>
#include<stdlib.h>
#define N 1000001
typedef struct nod
{long info;
nod *urm;}Nod,*list;
int x;
long n,y,i;
list h[N];
long hash(long y)
{return y%N;}
int find(list l,long y)
{Nod *p;
for(p=l;p!=NULL;p=p->urm)
if(p->info==y)
return 1;
return 0;}
void add(list &l,long y)
{Nod *nou=new Nod;
nou->urm=l;
nou->info=y;
l=nou;}
void del(list &l,long y)
{Nod *p=l,*q=l;
while(p!=NULL&&p->info!=y)
{q=p;
p=p->urm;}
if(p!=NULL)
{if(q==p)
l=l->urm;
else
q->urm=p->urm;
free(p);}}
int main()
{freopen("hashuri.in","r",stdin);
freopen("hashuri.out","w",stdout);
scanf("%ld\n",&n);
for(i=0;i<N;i++)
h[i]=NULL;
for(i=1;i<=n;i++)
{scanf("%d%ld\n",&x,&y);
if(x==1)
{if(find(h[hash(y)],y)==0)
add(h[hash(y)],y);}
else
if(x==2)
{if(find(h[hash(y)],y)==1)
del(h[hash(y)],y);}
else
printf("%d\n",find(h[hash(y)],y));}
fclose(stdin);
fclose(stdout);
return 0;}