题目:
Description
给出一个包含 n 个整数的序列,有 m 个询问,每个询问包含一个整数 xi ,如果序列中包含 xi, 则输出Yes, 否则输出No.Input
有多组输入数据, 每组数据第一行包含一个整数n (n<=1000000),和一个整数 m(m<=1000000), 接下来的 m 行每行一个整数xi.(-231<xi<231)Output
对每组输入数据, 输出 m 行,第 i 行表示第 i 组询问的结果。SampleInput
5 24 2 6 9 128SampleOutputYesNo代码:
#include#include #include #include #include #include using namespace std;const int maxn = 1e6+5;int a[maxn];bool Find(int a[], int l , int r, int k){ while(l < r) { int mid = l + ((r - l)>>1); if(k == a[mid]) { return true; } else if(k < a[mid]) { r = mid ; } else { l = mid + 1 ; } } return false;}int main(){ int n,m,k; scanf("%d%d",&n,&m); for(int i = 0 ; i < n; i++) { scanf("%d",&a[i]); } sort(a,a+n); while(m--) { scanf("%d",&k); bool flag = Find(a,0,n-1,k); if(flag) { printf("YES\n"); } else { printf("No\n"); } } return 0;}