1 #include<stdio.h> 2 #include<algorithm> 3 #include<string.h> 4 using namespace std; 5 int a[1000001],t; 6 int main() 7 { 8 int find(int left,int right,int k); 9 int n,m,i; 10 scanf("%d%d",&n,&m); 11 for(i=0;i<n;i++) 12 scanf("%d",&a[i]); 13 sort(a,a+n); 14 for(i=0;i<m;i++) 15 { 16 scanf("%d",&t); 17 if(find(0,n-1,t)) 18 printf("YES "); 19 else 20 printf("NO "); 21 } 22 return 0; 23 } 24 int find(int left,int right,int k) 25 { 26 while(left<=right) 27 { 28 int t=left+right; 29 if(a[left]>k&&a[right]<k) 30 break; 31 if(a[t/2]==k) 32 return 1; 33 else if(a[t/2]>k) 34 right=t/2-1; 35 else 36 left=t/2+1; 37 } 38 return 0; 39 }
二分查找