Cod sursa(job #315984)
#include<stdio.h>
#include<list>
#include<vector>
using namespace std;
vector<int> H[666013];
inline vector<int>::iterator find_value(int v)
{
int h = v % 666013;
vector<int>::iterator it;
for (it = H[h].begin(); it != H[h].end(); ++it)
if (*it == v)
return it;
return H[h].end();
}
inline void insert(int v)
{
int h;
h=v%666013;
if(find_value(v)==H[h].end())
H[h].push_back(v);
}
inline void del(int v)
{
int h;
h=v%666013;
vector<int>::iterator it=find_value(v);
if(it!=H[h].end())
H[h].erase(it);
}
int find(int v)
{
int h=v%666013;
for(vector<int>::iterator it=H[h].begin(); it != H[h].end(); ++it)
if( *it == v) return 1;
return 0;
}
int main()
{
int N, x;
int v;
freopen("hashuri.in","r",stdin);
freopen("hashuri.out","w",stdout);
scanf("%d\n",&N);
for(;N;N--)
{
scanf("%d %ld",&x,&v);
if(x==1)
insert(v);
else if(x==2)
del(v);
else if(x==3)
printf("%d\n",find(v));
}
return 0;
}