#include<stdio.h>
#include <algorithm>
using namespace std;
int main(){
int n,m,i;
int a[101];
int b[101];
while(scanf("%d",&n)!=EOF){
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
sort(a,a+n);
scanf("%d",&m);
for(i=0;i<m;i++){
scanf("%d",&b[i]);
}
for(i=0;i<m;i++){
bool zhaodao=false;
int top=n-1;
int base=0;
while(base<=top){
int mid=(top+base)/2;
if(a[mid]==b[i]){
zhaodao=true;
printf("YES\n");
break;
}
else if(a[mid]>b[i]){
top=mid-1;
}
else base=mid+1;
}
if(zhaodao==false){
printf("NO\n");
}
}
}
return 0;
#include <algorithm>
using namespace std;
int main(){
int n,m,i;
int a[101];
int b[101];
while(scanf("%d",&n)!=EOF){
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
sort(a,a+n);
scanf("%d",&m);
for(i=0;i<m;i++){
scanf("%d",&b[i]);
}
for(i=0;i<m;i++){
bool zhaodao=false;
int top=n-1;
int base=0;
while(base<=top){
int mid=(top+base)/2;
if(a[mid]==b[i]){
zhaodao=true;
printf("YES\n");
break;
}
else if(a[mid]>b[i]){
top=mid-1;
}
else base=mid+1;
}
if(zhaodao==false){
printf("NO\n");
}
}
}
return 0;
}
注意:
用二分法查找 首先要将数组数据有序排列
二分法循环里 条件是base<=top 注意: 有等号!!
return 0 写错位置 会导致不能测试多组数据