Pagini recente » Cod sursa (job #2883106) | Cod sursa (job #879707) | Cod sursa (job #222304) | Cod sursa (job #1690481) | Cod sursa (job #1365060)
#include <cstdio>
#include <vector>
#include <cstring>
#define MOD 666013
using namespace std;
class Hash{
public:
vector<int> range[MOD];
Hash(){
memset(range,0,sizeof(range));
}
vector<int>::iterator Find(int k)
{
int pz = k % MOD;
for(vector<int>::iterator it = range[pz].begin(); it != range[pz].end(); ++it)
if(*it == k)
return it;
return range[pz].end();
}
void Erase(int k){
vector<int>::iterator it = Find(k);
if(it == range[k%MOD].end())
return;
range[k%MOD].erase(it);
}
void Insert(int k){
vector<int>::iterator it = Find(k);
if(it != range[k%MOD].end())
return;
range[k%MOD].push_back(k);
}
};
Hash H;
int main()
{
freopen("hashuri.in","r",stdin);
freopen("hashuri.out","w",stdout);
int N,t,v;
scanf("%d",&N);
for(int i = 1; i <= N; ++i)
{
scanf("%d%d",&t,&v);
if(t == 1)
H.Insert(v);
else
if(t == 2)
H.Erase(v);
else
printf("%d\n",H.Find(v) != H.range[v%MOD].end());
}
return 0;
}