Pagini recente » Cod sursa (job #1472929) | Cod sursa (job #218911) | Cod sursa (job #2891296) | Cod sursa (job #1479350) | Cod sursa (job #709395)
Cod sursa(job #709395)
#include <stdio.h>
using namespace std;
#define MOD 2000003
#define MOD2 1999993
int n;
int T[MOD];
inline int h(int x, int i){
return (((x%MOD)+i*(3+x%MOD2))%MOD);
}
int query(int x){
for(int i=0;;i++){
if (T[h(x,i)]==0) return 0;
if (T[h(x,i)]==x) return 1;
}
return 0;
}
void insert(int x){
int i,temp,j;
for (i=0;temp=h(x,i), (T[temp]!=0&&T[temp]!=x); i++);
if (T[temp]) return;
for (j=0;(T[h(x,j)]>0);j++);
T[h(x,j)]=x;
return;
}
void remove(int x){
int temp;
for(int i=0;;i++){
temp=h(x,i);
if (T[temp]==x){
T[temp]=-1;
return;
}
if (T[temp]==0) return;
}
}
int main(){
unsigned int op,nr;
freopen("hashuri.in","r",stdin);
freopen("hashuri.out","w",stdout);
scanf("%d",&n);
for (int i=1;i<=n;i++){
scanf("%d %d",&op,&nr);
if (op==1){ insert(nr); continue;}
if (op==2){ remove(nr); continue;}
if (op==3) printf("%d\n",query(nr));
}
return 0;
}