Pagini recente » Cod sursa (job #822141) | Cod sursa (job #450428) | Cod sursa (job #1361354) | Cod sursa (job #396674) | Cod sursa (job #3125565)
#pragma GCC optimize("Ofast")
#pragma GCC target("avx,avx2,f16c,fma,sse3,ssse3,sse4.1,sse4.2")
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
class Hashtable {
private:
vector<int> elems[1000000];
const int primVal = 99991;
public:
void add(int elem) {
int key = elem % this->primVal;
for (int i = 0; i < this->elems[key].size(); ++i) {
if (this->elems[key][i] == elem) {
return;
}
}
this->elems[key].push_back(elem);
}
void remove(int elem) {
int key = elem % this->primVal;
for (int i = 0; i < this->elems[key].size(); ++i) {
if (this->elems[key][i] == elem) {
this->elems[key].erase(this->elems[key].begin() + i);
//cout << "removed " << elem << '\n';
break;
}
}
}
bool find(int elem) {
int key = elem % this->primVal;
for (int i = 0; i < this->elems[key].size(); ++i) {
if (this->elems[key][i] == elem) {
return true;
}
}
return false;
}
};
ifstream myIn("hashuri.in");
ofstream myOut("hashuri.out");
Hashtable hashtable;
int main() {
int count, oper, nr;
myIn >> count;
for (int i = 0; i < count; ++i) {
myIn >> oper >> nr;
if (oper == 1) {
hashtable.add(nr);
}
else if (oper == 2) {
hashtable.remove(nr);
}
else {
myOut << hashtable.find(nr) << '\n';
}
}
}