Pagini recente » Cod sursa (job #799078) | Cod sursa (job #3169864) | Cod sursa (job #1092732) | Cod sursa (job #1335307) | Cod sursa (job #1413712)
#include <iostream>
#include <cstdio>
#include<cstdlib>
using namespace std;
int prim=1000003;
int n;
typedef struct Noduri{ int val; struct Noduri *urm; }Nod;
Nod *h[1000005];
void adauga(int val, int poz)
{
if(h[poz]==NULL)
{
h[poz]=(Nod *)malloc(sizeof(Nod));
h[poz]->urm=NULL;
h[poz]->val=val;
}
else{
int aparitii=0;
Nod *p=h[poz];
while(p)
{
if(p->val == val)aparitii++;
p=p->urm;
}
if(!aparitii)
{p->urm=h[poz];
p->val=val;
h[poz]=p;
}
}
}
void sterge(int val, int poz)
{
if(h[poz])
{
if(h[poz]->val == val)h[poz]=h[poz]->urm;
else
{
Nod *p=h[poz]->urm;
Nod *q=h[poz];
while(p)
{
if(p->val == val)
{
q->urm=p->urm;
}
else{
q=q->urm;
p=p->urm;
}
}
}
}
}
int verif(int val, int poz)
{
if(!h[poz])return 0;
Nod *p=h[poz];
while(p)
{
if(p->val == val)return 1;
p=p->urm;
}
return 0;
}
int main()
{
freopen("hashuri.in","r",stdin);
freopen("hashuri.out","w",stdout);
cin>>n;
int a,b;
for(int i=1; i<=n; i++)
{
scanf("%d %d",&a,&b);
if(a==1)
{
adauga(b,b%prim);
}
if(a==2)sterge(b,b%prim);
if(a==3)printf("%d\n",verif(b,b%prim));
}
return 0;
}