Pagini recente » Cod sursa (job #1520776) | Cod sursa (job #1356074) | Cod sursa (job #2731490) | Monitorul de evaluare | Cod sursa (job #1370541)
#include <cstdio>
using namespace std;
FILE *in=fopen ("hashuri.in","r");
FILE *out=fopen ("hashuri.out","w");
const int N=1000000,k=666013;
int lst [k],val[N],urm[N],n;
void adauga (int x)
{
int r=x%k;
val[++n]=x;
urm[n]=lst[r];
lst[r]=n;
}
void sterge (int x)
{
int r=x%k,p;
p=lst[r];
if (x==val[p])
{
lst[r]=urm[lst[r]];
return;
}
while (urm[p]!=0 && val[urm[p]]!=x)
p=urm[p];
if (urm[p]!=0)
urm[p]=urm[urm[p]];
}
int cauta (int x)
{
int r=x%k,p;
p=lst[r];
while (p!=0)
{
if (val[p]==x)
return 1;
p=urm[p];
}
return 0;
}
void citire ()
{
int n;
fscanf (in,"%d",&n);
for (int i=1; i<=n; i++)
{
int x,y;
fscanf (in,"%d%d",&x,&y);
if (x==1)
adauga (y);
if (x==2)
sterge (y);
if (x==3)
{
fprintf (out,"%d\n",cauta(y));
}
}
}
int main()
{
citire();
return 0;
}