Pagini recente » Cod sursa (job #866995) | Cod sursa (job #537971) | Cod sursa (job #556693) | Cod sursa (job #780725) | Cod sursa (job #2938599)
#include<fstream>
#include<cmath>
//#include<iostream>
using namespace std;
ifstream cin("hashuri.in");
ofstream cout("hashuri.out");
double y=(sqrt(5)-1)/2;
int m;
struct nod{
int info=0;
nod *urm=NULL;
}*h[1000002];
void inserare(nod *&prim,int val)
{
nod*t=new nod;
t->info=val;
t->urm=prim;
prim=t;
}
int get_index(int x)
{
return m*(x*y-floor(x*y));
}
void cautare(nod *prim,int val)
{
int gasit=0;
if(prim==NULL)
cout<<"0\n";
else
{
nod *p=prim;
while(p!=NULL)
{
if(p->info==val)
{gasit=1;break;}
p=p->urm;
}
if(gasit==1)
cout<<"1\n";
else
cout<<"0\n";
}
}
void parcurgere(nod *prim,int val)
{
int gasit=0;
if(prim==NULL)
cout<<"0\n";
else
{
nod *p=prim;
while(p!=NULL)
{
cout<<p->info<<' ';
p=p->urm;
}
}
}
void stergere(nod *&prim,int val)
{
if(prim==NULL)
return ;
nod *t;
if(prim->info==val)
{
t=prim;
prim=prim->urm;
delete prim;
return ;
}
t=prim;
while(t->urm->info!=val&&t->urm!=NULL)
{
t=t->urm;
}
if(t->info!=val)
return;
t->urm=t->urm->urm;
}
int main()
{
int n;
m=1000000;
cin>>n;
int x,j;
for(;n;n--)
{
cin>>x>>j;
if(x==1)
inserare(h[get_index(j)],j);
else
if(x==2)
{
stergere(h[get_index(j)],j);
}
else if(x==3)
cautare(h[get_index(j)],j);
}
}