给你n个数,然后有Q次查询,对于每一次查询,给你一个整数x,问你是否在这n个数中
输入:
输入第一行两个数n和q,代表有n次询问,q次查询
接下来第二行输入n个数
接下来q行,每一行一个数代表每一次查询的数
1<=n,q<=100000,1<=a[i],x<=2000000000
输出:
对于每一次查询,如果存在输出Yes,否则输出No
样例输入:
5 3 1 2 3 4 5 1 2 3
样例输出:
Yes Yes Yes
#include<stdio.h>
#include<iostream>
#include<algorithm>
using namespace std;
int a[100005];
int main()
{
int n,q;
cin>>n>>q;
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
sort(a+1,a+1+n);
while(q--)
{
int x;
scanf("%d",&x);
int l=1,r=n,mid;
int flag=0;
while(l<=r)//二分查找
{
mid=(l+r)/2;
if(a[mid]==x)
{
flag=1;
break;
}
if(a[mid]>x) r=mid-1;
else l=mid+1;
}
if(flag)printf("Yes\n");
else printf("No\n");
}
return 0;
}
二分查找,for循环遍历的话时间超限