【题目描述】
给出n个正整数,m个询问,每个询问对应一个整数,询问该整数是否在n个正整数中出现过。
【输入描述】
输入共三行。
第一行两个整数n和m;
第二行n(1 <= n <= 100000)个正整数;
第三行m(1 <= m <= 100000)个整数。
【输出描述】
输出m行,若出现则输出YES,否则输出NO。
【样例输入】
4 2
2 1 3 4
1 9
【样例输出】
YES
NO
【数据范围及提示】
所有数据都不超过108。
源代码: #include<cstdio> #include<vector> using namespace std; int n,m; vector <int> i[10008]; int Get_Hash(int t) { return t%10007; } int main() //Hash Table。 { scanf("%d%d",&n,&m); for (int a=1;a<=n;a++) { int t; scanf("%d",&t); i[Get_Hash(t)].push_back(t); } while (m--) { int t; scanf("%d",&t); int T=Get_Hash(t); bool Flag(0); for (int a=0;a<i[T].size();a++) if (i[T][a]==t) Flag=true; if (!Flag) printf("NO "); else printf("YES "); } return 0; }