Cod sursa(job #2745548)

Utilizator 6kmeleon6Luca Cordus 6kmeleon6 Data 26 aprilie 2021 18:20:51
Problema Hashuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.67 kb
#include <bits/stdc++.h>

using namespace std;

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

vector <int> hash_[1109]; /// Consider numarul prim 1109

int poz(int x) /// Pozitie
{
    return x % 1109;
}

int main()
{
    int i, N, op, nr_curent;
    in >> N;
    for (i = 1; i <= N; i++)
    {
        in >> op >> nr_curent;
        switch (op)
        {
        case 1:
        {
            hash_[poz(nr_curent)].push_back(nr_curent);
        }
        break;
        case 2:
        {
            int poz_nr = poz(nr_curent);
            vector<int>::iterator ptr;
            /// Iau un iterator ca sa caut numarul in bucket
            /// Am folosit vector<int>::iterator ca sa pot face .erase()
            for (ptr = hash_[poz_nr].begin(); ptr < hash_[poz_nr].end(); ptr++)
            {
                if (*ptr == nr_curent)
                    break;
            }
            /// Daca il gasesc il sterg
            if(ptr < hash_[poz_nr].end())
            {
                hash_[poz_nr].erase(ptr);
            }
        }
        break;
        case 3:
        {
            int poz_nr = poz(nr_curent);
            vector<int>::iterator ptr;
            /// Iau un iterator ca sa caut numarul in bucket
            for (ptr = hash_[poz_nr].begin(); ptr < hash_[poz_nr].end(); ptr++)
            {
                if (*ptr == nr_curent)
                    break;
            }
            /// Daca il gasesc afisez 1, altfel afisez 0
            if(ptr < hash_[poz_nr].end())
                out << "1\n";
            else
                out << "0\n";
        }
        break;
        }
    }
    return 0;
}