Pagini recente » Cod sursa (job #25367) | Cod sursa (job #2108505) | Cod sursa (job #1483575) | Cod sursa (job #2495080) | Cod sursa (job #1331972)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("hashuri.in");
ofstream g("hashuri.out");
long nmax=666017;
struct nod
{
long inf;
nod *urm;
}*v[666018],*p;
long n,i,op,x;
void adaug(nod *&p,long x)
{
nod *q;
q=new nod;q->inf=x;q->urm=p;p=q;
}
void sterge(nod *&p)
{
nod *q,*r;
if(p)
{
if (p->urm==NULL )
{if(p->inf==x)
{delete p;p=NULL;}
}
else if(p->inf==x)
{
r=p;p=p->urm;delete r;
} else
{
q=p;
while(q->urm!=NULL && q->urm->inf!=x)
q=q->urm;
if (q->urm->inf==x)
{ r=q->urm;
q->urm=q->urm->urm;
delete r;
}
}
}}
int exista(long x)
{
nod *p;
p=v[x%nmax];
while(p && p->inf!=x)
p=p->urm;
if(p) return 1;
else return 0;
}
/*void afis(nod *p)
{
while(p)
{
cout<<p->inf<<" ";
p=p->urm;
}
cout<<endl;
}*/
int main()
{
f>>n;
for(i=1;i<=n;i++)
{
f>>op>>x;
//cout<<op<<x<<endl;
if (op==1)
adaug(v[x%nmax],x);
else if(op==2)
sterge(v[x%nmax]);
else g<<exista(x)<<endl;
//afis(v[x%nmax]);
}
g.close();
return 0;
}