Pagini recente » Cod sursa (job #2593285) | Cod sursa (job #2285684) | Cod sursa (job #7289) | Cod sursa (job #2836348) | Cod sursa (job #918392)
Cod sursa(job #918392)
#include <stdio.h>
#define MOD 2000000
using namespace std;
struct nod
{
int nr,sw;
nod *left,*right;
}*First[MOD+5];
int N;
nod * CreateNewNod(int nr)
{
nod *q=new nod;
q->nr=nr;
q->sw=1;
q->left=0;
q->right=0;
return q;
}
void Insert(nod *&p,int nr)
{
if(p==0)
{
p=CreateNewNod(nr);
return;
}
if(p->nr==nr)
{
p->sw=1;
return;
}
if(p->nr>nr)
Insert(p->left,nr);
else
Insert(p->right,nr);
}
void Delete(nod *p,int nr)
{
if(p==0)
return;
if(p->nr==nr)
{
p->sw=0;
return;
}
if(p->nr>nr)
return Delete(p->left,nr);
return Delete(p->left,nr);
}
int Search(nod *p,int nr)
{
if(p==0)
return 0;
if(p->nr==nr)
{
if(p->sw==1)
return 1;
return 0;
}
if(p->nr>nr)
return Search(p->left,nr);
return Search(p->left,nr);
}
void Read()
{
freopen("hashuri.in","r",stdin);
freopen("hashuri.out","w",stdout);
scanf("%d\n",&N);
int i,nr,sw,nrh;
for(i=1;i<=N;i++)
{
scanf("%d %d\n",&sw,&nr);
nrh=nr%MOD;
if(sw==1)
{
Insert(First[nrh],nr);
}
else if(sw==2)
{
Delete(First[nrh],nr);
}
else
printf("%d\n",Search(First[nrh],nr));
}
fclose(stdin);
fclose(stdout);
}
int main()
{
Read();
return 0;
}