Cod sursa(job #1584132)

Utilizator iulian_f2kGuraliuc Iulian iulian_f2k Data 29 ianuarie 2016 18:48:09
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.44 kb
#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';
    }
}