Pagini recente » Cod sursa (job #381990) | Cod sursa (job #225147) | Cod sursa (job #1061695) | Cod sursa (job #2153641) | Cod sursa (job #785356)
Cod sursa(job #785356)
#include<fstream>
#define P 666013
using namespace std;
struct nod{int info;nod*adr;}*v[P],*p,*q;
int n,i,op,nr;
void insereaza(int nr)
{int x=nr%P;
p=new nod;
p->info=nr; p->adr=v[x]; v[x]=p;
}
void sterge(int nr)
{int x=nr%P;
nod*cp=v[x];
if(!v[x])return ;
if(v[x]->info){ v[x]=0;return ; }
while(v[x]->adr)
{
if(v[x]->adr->info==nr)
if(v[x]->adr->adr)
{
q=v[x]->adr->adr;
delete(v[x]->adr);
v[x]->adr=q;
}
else
{
delete(v[x]->adr);
v[x]->adr=0;
}
v[x]=v[x]->adr;
}
v[x]=cp;
}
int cauta(int nr)
{int x=nr%P,gasit=0;
p=v[x];
while(p)
{
if(p->info==nr){gasit=1;break;}
p=p->adr;
}
return gasit;
}
int main()//insereaza,sterge,verifica daca exista nr....nr<=2000.000.000
{
ifstream f("hashuri.in");ofstream g("hashuri.out");
f>>n;
for(i=1;i<=n;i++)
{
f>>op>>nr;
if(op==1)insereaza(nr); else
if(op==2)sterge(nr); else
if(op==3)g<<cauta(nr)<<'\n';
}
f.close();g.close();
return 0;}