1 #include<iostream>
2 #include<cstring>
3 using namespace std;
4
5 const int N = 100013;//范围是质数的哈希冲突可以达到最小
6 //定义拉链槽
7 int h[N];
8 //拉链相当于一个链表,开两个数组,一个是存储链表里的值,另一个是下一个位置在什么地方
9 //idx表示当前链表用到了哪个位置
10 int e[N],ne[N],idx;
11
12 void insert(int k){
13 int x = (k%N + N)%N;
14 e[idx] = k;
15 ne[idx] = h[x];
16 h[x] = idx++;
17 }
18
19 bool find(int x){
20 int k = (x%N + N)%N;
21 for(int i = h[k];i != -1;i = ne[i]){
22 if(e[i] == x) return true;
23 }
24 return false;
25
26 }
27
28 int main(){
29 freopen("in.txt","r",stdin);
30 int n,k;
31 scanf("%d",&n);
32 char op[2];
33 memset(h,-1,sizeof h);
34 while(n -- ){
35 scanf("%s",op);
36 if(!strcmp(op,"I")){
37 scanf("%d",&k);
38 insert(k);
39 }else{
40 scanf("%d",&k);
41 if(k && find(k)){
42 puts("Yes");
43 }else{
44 puts("No");
45 }
46 }
47 }
48
49 }