Pagini recente » Cod sursa (job #176206) | Cod sursa (job #2145259) | Cod sursa (job #2084049) | Cod sursa (job #573176) | Cod sursa (job #2733085)
#include <fstream>
#include <bits/stdc++.h>
#include <cstring>
#include <stack>
#include <vector>
using namespace std;
ifstream fin("hashuri.in");
ofstream fout("hashuri.out");
int prim = 786433; // https://planetmath.org/goodhashtableprimes
int N, op, x;
vector <int> H[786433]; // [0] -> lista cu elem % prim = 0 ...
void add_number(int x, int bucket)
{
bool is_already = false;
for (int i = 0; i < H[bucket].size(); ++i)
{
if (H[bucket][i] == x)
{
is_already = true;
break;
}
}
if (is_already == false)
{
H[bucket].push_back(x);
}
}
void delete_number(int x, int bucket)
{
for (int i = 0; i < H[bucket].size(); ++i)
{
if (H[bucket][i] == x)
{
swap(H[bucket][H[bucket].size() - 1], H[bucket][i]);
H[bucket].pop_back();
break;
}
}
}
bool check(int x, int bucket)
{
for (int i = 0; i < H[bucket].size(); ++i)
{
if (H[bucket][i] == x)
{
return 1;
}
}
return 0;
}
int main()
{
fin >> N;
for (int i = 0; i < N; ++i)
{
fin >> op;
fin >> x;
switch (op)
{
case 1:
{
int bucket = x % prim;
add_number(x, bucket);
break;
}
case 2:
{
int bucket = x % prim;
delete_number(x, bucket);
break;
}
case 3:
{
int bucket = x % prim;
fout << check(x, bucket) << "\n";
break;
}
}
}
return 0;
}