Pagini recente » Cod sursa (job #2040301) | Cod sursa (job #1094741) | Cod sursa (job #2320143) | Cod sursa (job #80043) | Cod sursa (job #1844648)
#include<bits/stdc++.h>
using namespace std;
struct nod{
int val;
nod *last, *next;
nod(){
val=0;
last=next=NULL;
}
};
nod *h[666020];
void add(nod* &a, int val){
if(a==NULL){
a=new nod;
a->val=val;
return;
}
nod* it=a;
nod* b=new nod;
for(; it->next; it=it->next) {
if (it->val==val) return;
if (it->val>val) {
nod* p= it->next;
p->next=b;
b->last=p;
it->last=b;
b->val=val;
}
}
}
void remove(nod* &a, int val){
if(a==NULL) return;
if (a->val==val)
{
a=a->next;
return;
}
if(a==NULL)return;
nod* it=a;
for(;it->next; it=it->next)
if (it->val==val) {
nod *u=it->last, *p=it->next;
u->next=p;
p->last=u;
delete it;
return;
}
}
int caut(nod* &a, int val){
nod* it=a;
if(it==NULL) return 0;
if(a->val==val)return 1;
for(;it->next; it=it->next)
if (it->val==val) return 1;
return 0;
}
int main(){
freopen("hashuri.in", "r", stdin);
freopen("hashuri.out", "w", stdout);
int n, x, y, i;
scanf("%d", &n);
// for(i=0; i<=666013; i++) h[i]=NULL;
while(n--){
scanf("%d%d", &x, &y);
if(x==1) {
add(h[y%666013], y);
continue;
}
if(x==2) remove(h[y%666013], y);
if(x==3) printf("%d\n",caut(h[y%666013], y));
}
return 0;
}