Cod sursa(job #658967)
#include<stdio.h>
#include<vector>
#define M 666013
using namespace std;
vector<int> H[M];
inline vector<int>::iterator gaseste(int x)
{
int lista=x%M;
vector<int>::iterator i;
for(i=H[lista].begin();i!=H[lista].end();++i)
if(*i==x)
return i;
return H[lista].end();
}
inline void insereaza(int x)
{
int lista=x%M;
if(gaseste(x)==H[lista].end())
H[lista].push_back(x);
}
inline void sterge(int x)
{
int lista=x&M;
vector<int>::iterator i=gaseste(x);
if(i!=H[lista].end())
H[lista].erase(i);
}
int main()
{
int n;
FILE *f=fopen(f,"hashuri.in","rt");
FILE *g=fopen(g,"hashuri.out","wt");
int op,x,i;
fscanf(f,"%i",&n);
for(i=0;i<n;i++)
{
fscanf(f,"%i%i",&op,&x);
if(op==1)
{
insereaza(x);
continue;
}
if(op==2)
{
sterge(x);
continue;
}
if(op==3)
fprintf(g,"%i\n",gaseste(x)!=H[x%M].end());
}
return 0;
}