Pagini recente » Cod sursa (job #2797457) | Cod sursa (job #1579041) | Cod sursa (job #2542700) | Cod sursa (job #3163362) | Cod sursa (job #2908441)
#include <fstream>
#include <vector>
#include <algorithm>
#include <unordered_set>
using namespace std;
ifstream fin("hashuri.in");
ofstream fout("hashuri.out");
#define MOD 666013
vector<int> h[MOD];
unordered_set<int> mySet;
int f(int x) {
return x % MOD;
}
bool cauta(int x) {
int nr = f(x);
int i = 0;
while(i < h[nr].size() && h[nr][i] != x)i++;
if(i < h[nr].size())return 1;
else return 0;
}
bool cauta2(int x) {
if (mySet.find(x) == mySet.end())
return 0;
return 1;
}
void adauga(int x) {
if(cauta(x) == 0){
int nr = f(x);
h[nr].push_back(x);
}
}
void adauga2(int x) {
mySet.insert(x);
}
void sterge(int x) {
int i = 0,nr = f(x);
while(i < h[nr].size() && h[nr][i] != x){
i++;
}
if(i < h[nr].size()){
swap(h[nr][i],h[nr].back());
h[nr].pop_back();
}
}
void sterge2(int x) {
auto it = mySet.find(x);
if (it != mySet.end())
mySet.erase(it);
}
int main()
{
int n,i,cer,nr;
fin>>n;
for(i = 0;i < n;i++){
fin>>cer>>nr;
if(cer == 1){
adauga2(nr);
}else if(cer == 2){
sterge2(nr);
}else fout<<cauta2(nr)<<'\n';
}
return 0;
}