Cod sursa(job #1216788)

Utilizator Paula-ElenaPaula-Elena Margarit Paula-Elena Data 5 august 2014 19:22:26
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
#include <fstream>
using namespace std;

const int MAXN = 2010023 , P = 666013;

class Hash
{
    int v[MAXN];

    int getPos(int key)
    {
        int poz = key % MAXN;
        int pas = 1 + key % P;
        while ( v[poz] != 0 && v[poz] != key )
            poz = (poz + pas) % MAXN;

        return poz;
    }

public:
    void adauga(int key)
    {
        v[getPos(key)] = key;
    }

    bool cauta(int key)
    {
        return v[getPos(key)] == key;
    }

    void sterge(int key)
    {
        int poz = getPos(key);
        if ( v[poz] == key )
            v[poz] = -1;
    }
};

Hash H;

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

    int N;
    fin >> N;
    while ( N-- )
    {
        int tip, x;
        fin >> tip >> x;
        if ( tip == 1 )
            H.adauga(x);
        else if ( tip == 2 )
            H.sterge(x);
        else
            fout << H.cauta(x) << '\n';
    }

    fin.close();
    fout.close();

    return 0;
}