Cod sursa(job #1813112)

Utilizator CiurezAndreiCiurez Marius-Andrei CiurezAndrei Data 22 noiembrie 2016 18:34:05
Problema Hashuri Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1.57 kb
#include <bits/stdc++.h>

#define Lch (1 << 19) - 1

using namespace std;

ifstream fin("hashuri.in");
ofstream fout("hashuri.out");

struct Hash{

    int data;
    Hash *next;

}*L[Lch + 1];

inline bool hashFind(const int &x)
{
    int cheie = x & Lch;
    Hash *p;

    for(p = L[cheie]; p; p = p -> next)
    {
        if( p -> data == x )
        {
            return true;
        }
    }
    return false;
}

inline void hashInsert(const int &x)
{
    int cheie = x & Lch;
    Hash *p;
   if(hashFind(x) == false)
   {
        p = new Hash;
        p -> data = x;
        p -> next = L[cheie];
        L[cheie] = p;
   }
}

inline void hashErase(const int &x)
{
    int cheie = x & Lch;
    Hash *p;

    for(p = L[cheie]; p; p = p -> next)
    {
        if( p -> data == x )
        {
            L[cheie] = p -> next;
            delete p;
        }
    }
}

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

    for(int i = 1; i <= n; i ++)
    {
        int op;
        int x;
        fin >> op;

        if(op == 1)
        {
            fin >> x;
            hashInsert(x);
        }
        else
            if(op == 2)
            {
                fin >> x;
                hashErase(x);
            }
            else
            {
                fin >> x;
                if(hashFind(x) == true)
                {
                    fout << "1" << '\n';
                }
                else
                {
                    fout << "0" << '\n';
                }
            }
    }
    return 0;
}