Cod sursa(job #1583643)

Utilizator iulian_f2kGuraliuc Iulian iulian_f2k Data 29 ianuarie 2016 09:59:04
Problema Hashuri Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.46 kb
#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;

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';
    }
}