Cod sursa(job #904820)
#include<cstdio>
#include<cstdlib>
#include<iostream>
#define mod 147
#define inf 0
using namespace std;
int h1(int x)
{
return x%mod;
}
int h2(int x)
{
return abs(x/mod)%mod;
}
int Cautare(int x,int H1[150], int H2[150])
{
if(H1[h1(x)]==x || H2[h2(x)]==x)
return 1; //a fost gasit
return 0;
}
void Inserare(int x,int max,int H1[150],int H2[150])
{
int aux;
if(Cautare(x,H1,H2)==1) return;
while(max)
{
if(H1[h1(x)]==inf) {H1[h1(x)]=x;return;}
aux=x;x=H1[h1(x)];H1[h1(x)]=aux;
if(H2[h2(x)]==inf) {H2[h2(x)]=x;return;}
aux=x;x=H2[h2(x)];H2[h2(x)]=aux;
max--;
}
Inserare(x,max,H1,H2);
}
void Stergere(int x,int H1[150],int H2[150])
{
if(Cautare(x,H1,H2)==0) return;
if(H1[h1(x)]==x) H1[h1(x)]=inf;
if(H2[h2(x)]==x) H2[h2(x)]=inf;
}
int main()
{
freopen("hashuri.in","r",stdin);
freopen("hashuri.out","w",stdout);
int n,i,j,H1[150],H2[150],a,nr;
for(int i=0;i<mod;i++)
{H1[i]=inf;H2[i]=inf;}
cin>>n;
for(i=1;i<=n;i++)
{
cin>>nr>>a;
if(nr==1)
Inserare(a,n,H1,H2);
if(nr==2)
Stergere(a,H1,H2);
if(nr==3)
cout<<Cautare(a,H1,H2)<<endl;
}
return 0;
}