Pagini recente » Cod sursa (job #99184) | Sport | Cod sursa (job #2936448) | Cod sursa (job #10696) | Cod sursa (job #237977)
Cod sursa(job #237977)
#include <stdio.h>
#include <vector>
#include <assert.h>
using namespace std;
#define mod 666013
int N;
vector <int> Hash[mod];
inline void add(int x)
{
int y = x % mod, i, l = Hash[y].size();
for (i=0; i<l; i++)
if (Hash[y][i] == x) return;
Hash[y].push_back(x);
}
inline void remove(int x)
{
int y = x % mod, i, l = Hash[y].size();
for (i=0; i<l; i++)
if (Hash[y][i] == x)
{
Hash[y][i] = Hash[y][l-1];
Hash[y].pop_back();
return;
}
}
inline int search(int x)
{
int y = x % mod, i, l = Hash[y].size();
for (i=0; i<l; i++)
if (Hash[y][i] == x) return 1;
return 0;
}
int main()
{
freopen("hashuri.in", "r", stdin);
freopen("hashuri.out", "w", stdout);
int tip, i, x;
scanf("%d ", &N);
assert(1 <= N && N <= 1000000);
for (i = 1; i <= N; i++)
{
scanf("%d %d ", &tip, &x);
assert(1<=tip && tip<=3);
assert(1<=x && x<=2000000000);
if (tip == 1) add(x);
if (tip == 2) remove(x);
if (tip == 3) printf("%d\n", search(x));
}
return 0;
}