Pagini recente » Rating Grijak-Dragos Andrei (MyRmIdOn) | Cod sursa (job #1797345) | Cod sursa (job #1699042) | Statistici Albert Catalin (rambocata) | Cod sursa (job #371196)
Cod sursa(job #371196)
#include<stdio.h>
#include<stdlib.h>
#define NN 1000001
#define NM 1000001
struct nod{
int x;
nod*next;
};
struct lista{
nod*vf,*sf;
};
int n;
lista v[NM];
void add(lista&l,int x){
nod *nn=new nod;
nn->x=x;
nn->next=NULL;
if(!l.vf) l.vf=nn;
else l.sf->next=nn;
l.sf=nn;
}
int cauta(int x){
int r=x%NN;
nod *nc=v[r].vf;
while(nc&&nc->x!=x) nc=nc->next;
return nc!=0;
}
void sterge(int x){
int r=x%NN;
nod *nc=v[r].vf;
while(nc&&nc->x!=x) nc=nc->next;
if(nc) nc->x=0;
}
int main(){
freopen("hashuri.in","r",stdin);
freopen("hashuri.out","w",stdout);
int i,m,op,x;
char s[15],*p;
scanf("%d\n",&m);
while(m--){
fgets(s,14,stdin);
p=s;
op=atoi(p);p+=2;x=atoi(p);
switch(op){
case 1:
n++;add(v[x%NN],x);
break;
case 2:sterge(x);break;
case 3:i=cauta(x);
if(i) printf("1\n");
else printf("0\n");
}
}
return 0;
}