Pagini recente » Cod sursa (job #2424476) | Cod sursa (job #3170829) | Cod sursa (job #2716684) | Rating Butoi Alexandru (alyymov) | Cod sursa (job #904793)
Cod sursa(job #904793)
#include<cstdio>
#include<cstdlib>
#include<iostream>
#define mod 666013
#define inf 0
using namespace std;
void Initializare(int v[mod])
{
for(int i=0;i<=mod;i++)
v[i]=inf;
}
//void Afisare(int v[mod],int n)
//{
// for(int i=0;i<=n;i++)
// if(v[i]!=inf)
// cout<<i<<": "<<v[i]<<endl;
// else
// cout<<i<<": -"<<endl;
//}
int h1(int x)
{
return x%mod;
}
int h2(int x)
{
return abs(x/mod)%mod;
}
int Cautare(int x,int H1[mod], int H2[mod])
{
if(H1[h1(x)]==x || H2[h2(x)]==x)
return 1; //a fost gasit
return 0;
}
void Inserare(int x,int max,int H1[mod],int H2[mod])
{
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[mod],int H2[mod])
{
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[mod],H2[mod],a,nr;
Initializare(H1);
Initializare(H2);
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;
}
//cout<<endl;Afisare(H1,mod);
// Afisare(H2,mod);
return 0;
}