Mai intai trebuie sa te autentifici.
Cod sursa(job #1583640)
Utilizator | Data | 29 ianuarie 2016 09:56:48 | |
---|---|---|---|
Problema | Hashuri | Scor | 30 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 1.46 kb |
#include <iostream>
#include <fstream>
#define NMAX 1000005
#define H ((2<<27) -1)
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;
}
}
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;
}
}
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';
}
}