Pagini recente » Cod sursa (job #2687253) | Cod sursa (job #1371134) | Cod sursa (job #2190488) | Cod sursa (job #2114024) | Cod sursa (job #2765048)
#include <fstream>
#include <iostream>
#include <vector>
using namespace std;
ifstream fin("hashuri.in");
ofstream fout("hashuri.out");
class Hash {
private:
static const int nnmb = 60000;
vector<int> v[nnmb];
public:
void add_nmb(int);
void del_nmb(int);
void display();
int find_nmb(int);
};
void Hash::add_nmb(int added_number) {
int key_number = added_number % nnmb, okay = 0;
for (int & it : v[key_number])
if (it != added_number)
okay = 1;
if (okay)
return;
v[key_number].push_back(added_number);
}
void Hash::del_nmb(int deleted_number) {
int key_number = deleted_number % nnmb, okay = 0;
for (int & it : v[key_number])
if (it == deleted_number)
okay = 1;
if (!okay)return;
auto it = find(v[key_number].begin(), v[key_number].end(), deleted_number);
v[key_number].erase(it);
}
void Hash::display() {
for (auto & i : v)
if (!i.empty()) {
for (int & it : i)
cout << it << " ";
cout << endl;
}
}
int Hash::find_nmb(int searched_nmb) {
int key_nmb = searched_nmb % nnmb;
auto it = find(v[key_nmb].begin(), v[key_nmb].end(), searched_nmb);
if (it != v[key_nmb].end())
return 1;
return 0;
}
Hash H;
int n, x, op;
int main() {
fin >> n;
for (; n != 0; n--) {
fin >> op >> x;
if (op == 1)
H.add_nmb(x);
else if (op == 2)
H.del_nmb(x);
else if (op == 3)
fout << H.find_nmb(x) << '\n';
}
return 0;
}