Pagini recente » Cod sursa (job #1389240) | Cod sursa (job #684421) | Cod sursa (job #1765860) | Cod sursa (job #615577) | Cod sursa (job #1583646)
#include <iostream>
#include <fstream>
#define NMAX 1000005
#define H ((2<<20) -1)
using namespace std;
struct element
{
int val;
element *urm=NULL;
element *ant=NULL;
}*M[H], *p;
int N, op, elem;
bool cautaInMultime(int elem)
{
int indice = elem % H;
p=M[indice];
while(p)
if(p->val==elem)
return 1;
else
p=p->urm;
return 0;
}
void introducere(int elem)
{
int indice= elem % H;
if(!cautaInMultime(elem))
{
element *q=new element;
if(M[indice]==NULL)
{
q->val=elem;
M[indice]=q;
}
else
{
element *aux = M[indice];
while( aux->urm)
aux=aux->urm;
q->ant=aux;
aux=q;
aux->val=elem;
}
}
}
void sterge(int elem)
{
int indice = elem % H;
if(M[indice] == NULL)
return;
p=M[indice];
while(p)
{
if(p->val==elem)
{
if(p->ant)
p->ant->urm= p->urm;
else
M[indice]=NULL;
delete p;
break;
}
else
p=p->urm;
}
}
int main()
{
freopen("hashuri.in", "rt", stdin);
freopen("hashuri.out", "wt", stdout);
scanf("%d", &N);
for(int i=1; i<=N; i++)
{
scanf("%d %d\n", &op, &elem);
if(op == 1)
introducere(elem);
else if(op == 2)
sterge(elem);
else
cout<<cautaInMultime(elem)<<'\n';
}
}