Pagini recente » Cod sursa (job #2391462) | Cod sursa (job #2823765) | Cod sursa (job #239033) | Cod sursa (job #731419) | Cod sursa (job #315991)
Cod sursa(job #315991)
#include<stdio.h>
#include<list>
#include<vector>
#define DIM 8192
using namespace std;
vector<int> H[666013];
char ax[DIM+16];
int pz;
inline void cit(int &x)
{
x=0;
while((ax[pz]<'0' || ax[pz]>'9') && (ax[pz]!='-'))
if(++pz==DIM)fread(ax, 1, DIM, stdin), pz=0;
int neg=0;
if(ax[pz]=='-')
{
neg=1;
if(++pz==DIM)fread(ax, 1, DIM, stdin),pz=0;
}
while(ax[pz]>='0' && ax[pz]<='9')
{
x=x*10+ax[pz]-'0';
if(++pz==DIM)fread(ax,1, DIM, stdin),pz=0;
}
if(neg) x=-x;
}
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);
}
inline 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);
cit(N);
for(;N;N--)
{
cit(x);
cit(v);
if(x==1)
{
insert(v);
continue;
}
else if(x==2)
{
del(v);
continue;
}
printf("%d\n",find(v));
}
return 0;
}