Pagini recente » Cod sursa (job #2787075) | Cod sursa (job #2072429) | Cod sursa (job #1842876) | Cod sursa (job #1851513) | Cod sursa (job #921246)
Cod sursa(job #921246)
#include <stdio.h>
#define MOD 1000000
using namespace std;
struct nod
{
int nr;
nod *next;
}*First[MOD+5];
int N;
void Insert(int nr)
{
nod *q=new nod;
q->nr=nr;
q->next=First[nr%MOD];
First[nr%MOD]=q;
}
void Query1(int nr)
{
Insert(nr);
}
void Delete(nod *p,int nr)
{
if(p->next)
{
if(p->next->nr==nr)
{
nod *q=p->next;
p->next=q->next;
delete q;
return;
}
Delete(p->next,nr);
}
}
void Query2(int nr)
{
int modnr=nr%MOD;
if(First[modnr]==0)
return;
if(First[modnr]->nr==nr)
{
nod *q=First[modnr];
First[modnr]=q->next;
delete q;
return;
}
Delete(First[modnr],nr);
}
int Search(nod *p,int nr)
{
if(p==0)
return 0;
if(nr==p->nr)
return 1;
return Search(p->next,nr);
}
int Query3(int nr)
{
int modnr=nr%MOD;
return Search(First[modnr],nr);
}
void Read()
{
freopen("hashuri.in","r",stdin);
freopen("hashuri.out","w",stdout);
scanf("%d\n",&N);
int i,nr,sw;
for(i=1;i<=N;i++)
{
scanf("%d %d\n",&sw,&nr);
if(sw==1)
Query1(nr);
else if(sw==2)
Query2(nr);
else
printf("%d\n",Query3(nr));
}
fclose(stdin);
fclose(stdout);
}
int main()
{
Read();
return 0;
}