Pagini recente » Monitorul de evaluare | Cod sursa (job #1511351) | Diferente pentru algoritmul-lee intre reviziile 41 si 35 | Cod sursa (job #434314) | Cod sursa (job #1584132)
#include <iostream>
#include <fstream>
#define NMAX 1000005
//#define H ((2<<20) -1)
#define H 666013
using namespace std;
struct element
{
int val;
element *urm=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;
q->val = elem;
q->urm = M[indice];
M[indice] = q;
}
}
void sterge(int elem)
{
int indice = elem % H;
if(M[indice] == NULL)
return;
p=M[indice];
if(p->val==elem){
M[indice]=p->urm;
delete p;
return;
}
while(p->urm)
{
if(p->urm->val==elem)
{
element *aux = p->urm;
p->urm=p->urm->urm;
delete aux;
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';
}
}