Pagini recente » Cod sursa (job #371164) | Cod sursa (job #3274297) | Cod sursa (job #2457352) | Cod sursa (job #3214730) | Cod sursa (job #2445630)
#include <bits/stdc++.h>
#define maxN 1000002
#define m 1543
using namespace std;
FILE *fin = freopen("hashuri.in", "r", stdin);
FILE *fout = freopen("hashuri.out", "w", stdout);
int n, r = 3, A[4];
class Hahs
{
public :
set < int > L[m];
int Key(int x)
{
int cp = x, K = 0;
for (int i = 0; i < r; ++ i, cp /= m)
K = (1LL * A[i] * (cp % m) + K) % m;
return K;
}
void Insert(int x)
{
int k = Key(x);
L[k].insert(x);
}
void Delete(int x)
{
int k = Key(x);
if (L[k].find(x) != L[k].end())
L[k].erase(x);
}
bool Search(int x)
{
int k = Key(x);
return (L[k].find(x) != L[k].end());
}
} H;
int main()
{
scanf("%d", &n);
srand(time(0));
int a = rand();
int cp = a;
for (int i = 0; i < r; ++ i, cp /= m)
A[i] = cp % m;
while (n --)
{
int ty, x;
scanf("%d%d", &ty, &x);
if (ty == 1)
H.Insert(x);
else if (ty == 2)
H.Delete(x);
else
printf("%d\n", H.Search(x));
}
return 0;
}