Cod sursa(job #2277244)

Utilizator MateiAruxandeiMateiStefan MateiAruxandei Data 5 noiembrie 2018 21:43:07
Problema Hashuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.33 kb
#include <fstream>

#define MOD 66013
using namespace std;

ifstream cin("hashuri.in");
ofstream cout("hashuri.out");

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

tabelaHash *H[66013];

bool Search(long long nr)
{
    tabelaHash *L = new tabelaHash;
    for(L = H[nr % MOD]; L && (L -> val != nr); L = L ->Next);

    return L != NULL;
}

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];

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

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

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