Pagini recente » Cod sursa (job #1915184) | Cod sursa (job #962167) | Cod sursa (job #1377978) | Istoria paginii runda/antrenament1/clasament | Cod sursa (job #1844644)
#include<bits/stdc++.h>
using namespace std;
struct nod{
int val;
nod *last, *next;
nod(){
val=0;
last=next=NULL;
}
};
nod *h[333014];
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;
it->next=b;
b->last=it;
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<=333013; i++) h[i]=NULL;
while(n--){
scanf("%d%d", &x, &y);
if(x==1) {
add(h[y%7], y);
continue;
}
if(x==2) remove(h[y%7], y);
if(x==3) printf("%d\n",caut(h[y%7], y));
}
return 0;
}