Pagini recente » Cod sursa (job #2215573) | Cod sursa (job #832895) | Istoria paginii runda/statia1a/clasament | Cod sursa (job #1554639) | Cod sursa (job #1583629)
#include <iostream>
#include <fstream>
#define NMAX 1000005
#define H 666013
using namespace std;
struct element{
int val;
element *urm=NULL;
element *ant=NULL;
}*M[H], *p;
int N, op, elem;
void introducere(int elem)
{
int indice= elem % H;
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;
}
/*
aux->val=elem;
aux->urm=NULL;
aux->ant=NULL;
if(M[indice]==NULL)
M[indice]=aux;
else{
element *q = M[indice];
while(q->urm)
q=q->urm;
aux->ant=p;
p->urm=aux;
}*/
}
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;
break;
}
else
p=p->urm;
}
}
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;
}
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';
}
}