/* * 描述 输入数组长度 n 输入数组a[1...n] 输入查找个数m 输入查找数字b[1...m] 输出 YES or NO 查找有则YES 否则NO 。 输入描述: 输入有多组数据。 每组输入n,然后输入n个整数,再输入m,然后再输入m个整数(1<=m,n<=100)。 输出描述: 如果在n个数组中输出YES否则输出NO。 */ #include <cstdio> #include <algorithm> using namespace std; int arr[100];//全局数组,方便在不同函数之间共享 bool BinarySearch(int n,int x){//二分查找 //查到返回true //查不到返回flase int left = 0; int right = n-1; while(left<=right){ int mid = (left +right)/2; if(arr[mid] == x){ return true; } else if(arr[mid] > x){ right=mid - 1;//右边缘左缩 //最后的边界情况,如果right和left相等,下次 //right可能变为left-1 } else{ left = mid + 1; } } return false; } int main(){ int n,m; while(scanf("%d",&n)!=EOF){ for(int i=0;i<n;i++){ scanf("%d",&arr[i]); } //排序 sort(arr,arr+n); //读取m个数据 scanf("%d",&m); for(int i=0;i<m;i++){ int x; scanf("%d",&x); if(BinarySearch(n,x)){ printf("YES\n"); } else printf("NO\n"); } } return 0; }