Pagini recente » Cod sursa (job #572571) | Cod sursa (job #84898) | Cod sursa (job #123968) | Cod sursa (job #2306031) | Cod sursa (job #632145)
Cod sursa(job #632145)
#include <stdio.h>
#include <stdlib.h>
struct point {
int inf;
point *leg;
};
point *h[676014];
long n,op,nr,x,n1,y,i;
long cautare(point *p, int nr) {
int ok;
ok=0;
while (p!=NULL) {
if (p->inf==nr) {
ok=1;
break;
}
p=p->leg;
}
return ok;
}
void inserare(long x, long nr) {
point *p;
p=new point;
p->inf=nr;
p->leg=h[x];
h[x]=p;;
}
void stergere(long x,long nr) {
point *p,*u;
int ok;
ok=0;
p=h[x];
u=NULL;
while (p!=NULL) {
if (p->inf==nr) {
ok=1;
break;
}
u=p;
p=p->leg;
}
if (ok) {
if (u!=NULL) {
p=u->leg->leg;
u->leg=p;
}
else h[x]=p->leg;
}
}
int main () {
freopen("hashuri.in","r",stdin);
freopen("hashuri.out","w",stdout);
scanf("%ld",&n);
n1=676013;
for (i=1; i<=n; i++) {
scanf("%ld%ld",&op,&nr);
x=nr%n1;
if (op==1)
if (cautare(h[x],nr)==0) inserare(x,nr);
if (op==2)
if (cautare(h[x],nr)==1) stergere(x,nr);
if (op==3) {
y=cautare(h[x],nr);
printf("%d\n",y);
}
}
return 0;
}