Pagini recente » Cod sursa (job #771430) | Cod sursa (job #93576) | Cod sursa (job #1171263) | Cod sursa (job #944223) | Cod sursa (job #2746946)
#include <iostream>
#include <vector>
using namespace std;
const int mod = 666013;
vector<int> v[mod];
int q, cod, x;
bool eInLista(int nr) {
int hash = nr % mod;
// Verifica daca nr e in lista sa de hash
for (auto val : v[hash]) {
if (val == nr) {
return true;
}
}
// Nicio valoare nu a dat return true mai sus, deci nr nu este in lista
return false;
}
int main() {
freopen("hashuri.in", "r", stdin);
freopen("hashuri.out", "w", stdout);
// Input rapid
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
// Citeste datele
cin >> q;
for (int i = 0; i < q; i++) {
cin >> cod >> x;
// Calculeaza hash-ul lui x folosind un numar prim
int xHash = x % mod;
if (cod == 1) {
// Cod 1 = adauga x (daca nu e deja in lista)
if (!eInLista(x)) {
v[xHash].push_back(x);
}
} else if (cod == 2) {
// Cod 2 = sterge x (daca e in lista)
// Cauta iteratorul corespunzator elementului cautat, deoarece erase accepta numai
// iterator, nu si valoare direct
for (auto it = v[xHash].begin(); it != v[xHash].end(); it++) {
if (x == *it) {
// Numarul a fost gasit, asa ca sterge-l si opreste-te
v[xHash].erase(it);
break;
}
}
} else if (cod == 3) {
// Cod 3 = afiseaza 1 daca x e in lista, 0 altfel
cout << (eInLista(x) ? "1" : "0") << "\n";
}
}
return 0;
}