Pagini recente » Cod sursa (job #3190010) | Cod sursa (job #25543) | Cod sursa (job #2955686) | Cod sursa (job #2396006) | Cod sursa (job #2773591)
#include <iostream>
#include <fstream>
#include <bits/stdc++.h>
using namespace std;
ifstream fin("hashuri.in");
ofstream fout("hashuri.out");
// https://www.geeksforgeeks.org/c-program-hashing-chaining/
class Hash
{
unsigned long long BUCKET;
list<unsigned long long> *table;
public:
Hash(unsigned long long V);
void insertItem(unsigned long long x);
void deleteItem(unsigned long long key);
bool findItem(unsigned long long key);
unsigned long long hashFunction(unsigned long long x) {
return (x % BUCKET);
}
void displayHash();
};
Hash::Hash(unsigned long long b)
{
this->BUCKET = b;
table = new list<unsigned long long>[BUCKET];
}
void Hash::insertItem(unsigned long long key)
{
unsigned long long index = hashFunction(key);
table[index].push_back(key);
}
void Hash::deleteItem(unsigned long long key)
{
unsigned long long index = hashFunction(key);
list <unsigned long long> :: iterator i;
for (i = table[index].begin();i != table[index].end(); i++) {
if (*i == key)
break;
}
if (i != table[index].end())
table[index].erase(i);
}
bool Hash::findItem(unsigned long long key){
unsigned long long index = hashFunction(key);
list <unsigned long long> :: iterator i;
for (i = table[index].begin(); i != table[index].end(); i++) {
if (*i == key)
return true;
}
return false;
}
int main()
{
unsigned long long n;
unsigned long long operatie, x;
fin>>n;
Hash hashSet(666013);
for(unsigned long long i = 1;i<=n;++i){
fin>>operatie>>x;
if(operatie == 1 && !hashSet.findItem(x)){
hashSet.insertItem(x);
}
else if(operatie == 2){
hashSet.deleteItem(x);
}
else{
if(!hashSet.findItem(x)){
fout<<0<<"\n";
}
else fout<<1<<"\n";
}
}
return 0;
}