Pagini recente » Cod sursa (job #2300300) | Cod sursa (job #1513910) | Cod sursa (job #2326782) | Cod sursa (job #1397770) | Cod sursa (job #779015)
Cod sursa(job #779015)
#include <stdio.h>
#include <vector>
using namespace std;
const char IN[]="hashuri.in",OUT[]="hashuri.out";
const int mod=(1<<21) , mmod=mod-1 , prime= 13;
int N;
vector<int> H[mod];
int key(int x){
return (1LL*x*prime)&mmod;
}
void add(int x){
H[key(x)].push_back(x);
}
bool query(int x){
int k=key(x);
for (int i=0;i<(int)H[k].size();++i) if (H[k][i]==x)
return true;
return false;
}
void erase(int x){
int i,j,k=key(x);
for (i=j=0;i<(int)H[k].size();++i) if (H[k][i]!=x)
H[k][j++]=H[k][i];
H[k].resize(j);
}
int main()
{
int c,x;
freopen(IN,"r",stdin);
scanf("%d",&N);
freopen(OUT,"w",stdout);
while (N--)
{
scanf("%d%d",&c,&x);
if (c==1)
add(x);
else if (c==2)
erase(x);
else printf("%d\n",query(x));
}
fclose(stdout);
fclose(stdin);
return 0;
}