Cod sursa(job #2745435)

Utilizator alexbrinzaAlexandru Brinza alexbrinza Data 26 aprilie 2021 15:46:25
Problema Hashuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.17 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <unordered_map>
using namespace std;

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

class Hash{
    static const int prime = 666013;
    vector < vector < int > > hash;

public:

    Hash(){
        hash.reserve(prime);
    }

    bool check(int val)
    {
        int pos = val % prime;
        bool ok = 0;
        for(int i = 0; i < hash[pos].size(); ++i)
            if(hash[pos][i] == val)
            {
                ok = 1;
                break;
            }

        return ok;
    }

    void insert(int val)
    {
        if(check(val) == 1) return;

        int pos = val % prime;
        hash[pos].push_back(val);
    }

    void delete_value(int val)
    {
        int pos = val % prime;

        for(int i = 0; i < hash[pos].size(); ++i)
            if(hash[pos][i] == val)
                hash[pos].erase(hash[pos].begin() + i);
    }
};

Hash v;
int n, task, x;

int main()
{
    in >> n;

    for(int i = 1 ; i <= n; ++i)
    {
        in >> task >> x;

        if(task == 1) v.insert(x);
        if(task == 2) v.delete_value(x);
        if(task == 3) out << v.check(x) << "\n";
    }
    return 0;
}