Pagini recente » Cod sursa (job #3182703) | Cod sursa (job #2333473) | Cod sursa (job #2320657) | Cod sursa (job #1802723) | Cod sursa (job #497373)
Cod sursa(job #497373)
#include<stdio.h>
struct point{int inf; point *leg;};
int i,op,nr,gasit,n;
point *a[666100];
inline void inserare(int x)
{
int nr=x%666013;
point *q=a[nr],*t;
while (q&&q->inf!=x) q=q->leg;
if (!q)
{
t=new point;
t->inf=x;
t->leg=a[nr];
a[nr]=t;
}
}
inline void sterge(int x)
{
int nr2=x%666013;
point *qq,*q=a[nr2];
if (q==NULL) return;
else if (q->inf==x)
{
a[nr2]=a[nr2]->leg;
delete(q);
}
else
{
while (q&&q->inf!=x) q=q->leg;
if (q!=NULL)
{
qq=q;
q=q->leg;
delete(qq);
}
}
}
int cautare(int x)
{
int nr3=x%666013;
point *q=a[nr3];
while (q!=NULL)
{
if (q->inf==x)
{
return 1;
break;
}
q=q->leg;
}
return 0;
}
int main()
{
freopen("hashuri.in","r",stdin);
freopen("hashuri.out","w",stdout);
scanf("%d",&n);
for (i=0; i<=666013; i++) a[i]=NULL;
for (i=1; i<=n; i++)
{
scanf("%d%d",&op,&nr);
switch(op)
{
case 1:
inserare(nr);
break;
case 2:
sterge(nr);
break;
case 3:
gasit=cautare(nr);
printf("%d\n",gasit);
break;
}
}
return 0;
}