Cod sursa(job #2277236)

Utilizator MateiAruxandeiMateiStefan MateiAruxandei Data 5 noiembrie 2018 21:33:51
Problema Hashuri Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.35 kb
#include <bits/stdc++.h>

#define MOD 66013
using namespace std;

struct tabelaHash
{
    long long val;
    tabelaHash *Next;
};

tabelaHash *H[66013];

bool Search(long long nr)
{
    tabelaHash *L = new tabelaHash;
    L = H[nr % MOD];
    if(L != NULL)
    {
        if(L->val == nr)
            return 1;

        while(L->Next != NULL)
        {
            if(L->val == nr)
                return 1;
            L = L -> Next;
        }
    }
    return 0;
}

void Add(long long nr)
{
    tabelaHash *L = new tabelaHash;
    L -> val = nr;
    L -> Next = H[nr % MOD];
    H[nr % MOD] = L;
}

void Delete(long long nr)
{
    tabelaHash *L = new tabelaHash;
    L = H[nr % MOD];

    while(L != NULL && L->Next != NULL)
    {
        if(L->Next->val == nr)
        {
            tabelaHash *deSters = L->Next;
            L->Next = L->Next->Next;
            delete deSters;
            return;
        }
        L = L -> Next;
    }
    H[nr % MOD] = L;
}

int main()
{
    int n;
    cin >> n;

    for(int i = 1; i <= n; ++i){
        long long tip, val;
        cin >> tip >> val;

        if(tip == 1)
            Add(val);

        if(tip == 2)
            Delete(val);

        if(tip == 3)
            cout << Search(val) << '\n';
    }
    cout << Search(3232343) << '\n';
    return 0;
}