快速浏览题目,你可能会觉得很快就能AC,但是。。。各种各样的错误。。超时,超内存。。。悲剧了。。别急,二分查找可以快速解决
问题。。
看代码吧。。部分解释在代码里。。
#include<stdio.h>
#include <algorithm>//排序
int yi[1000005];
void g(int k,int m)
{
int high=m-1,flag=0;
int low=0,mid;
while(low<=high)//以下就是二分查找的代码。。
{
mid=(low+high)/2;
if(yi[mid]<k)
{
low=mid+1;
}
else if(yi[mid]>k)
{
high=mid-1;
}
else
{
flag=1;
printf("YES\n");
break;
}
}
if(flag==0)
printf("NO\n");
}
int main()
{
int a,b,c,n,m,k;
scanf("%d%d",&m,&n);
for(a=0;a<m;a++)
scanf("%d",&yi[a]);
std::sort(yi,yi+m);//从小到大对数据排序。。
while(n--)
{
scanf("%d",&k);
g(k,m);
}
}