Pagini recente » Cod sursa (job #200483) | Cod sursa (job #2564083) | Cod sursa (job #2531492) | Cod sursa (job #2104083) | Cod sursa (job #1184843)
#include <cstdio>
#define KEY 1<<20
const int Q=1000002;
int nr;
int lst[KEY],val[Q],urm[Q];
FILE * in;
FILE * out;
void inline adauga(int x)
{
int r=x&(KEY-1);
val[++nr]=x;
urm[nr]=lst[r];
lst[r]=nr;
}
bool inline caut(int x)
{
int p=lst[x&(KEY-1)];
while(p!=0 && val[p]!=x)
p=urm[p];
return p!=0;
}
void inline sterge(int x)
{
int r=x&(KEY-1),p;
if(x==val[lst[r]])
{
lst[r]=urm[lst[r] ];
return;
}
p=lst[r];
while(urm[p]!=0 && val[urm[p]]!=x)
p=urm[p];
if(val[urm[p]]==x)
urm[p]=urm[urm[p]];
}
int main()
{
in=fopen("hashuri.in","r");
out=fopen("hashuri.out","w");
int n;
fscanf(in,"%d",&n);
int tipe,x;
for(int i=1; i<=n; i++)
{
fscanf(in,"%d%d",&tipe,&x);
if(tipe==1)
{
if(!caut(x))
adauga(x);
}else
if(tipe==2)
{
sterge(x);
}else
if(tipe==3)
{
if(caut(x))
fprintf(out,"1\n");
else
fprintf(out,"0\n");
}
}
return 0;
}