http://ac.jobdu.com/problem.php?cid=1040&pid=19
-
题目描述:
-
输入数组长度 n
输入数组 a[1...n]
输入查找个数m
输入查找数字b[1...m]
输出 YES or NO 查找有则YES 否则NO 。
-
输入:
-
输入有多组数据。
每组输入n,然后输入n个整数,再输入m,然后再输入m个整数(1<=m<=n<=100)。
-
输出:
-
如果在n个数组中输出YES否则输出NO。
-
样例输入:
-
5 1 5 2 4 3 3 2 5 6
-
样例输出:
-
YES YES NO
// 题目20:查找.cpp: 主项目文件。
#include "stdafx.h"
#include <cstdio>
#include <algorithm>
using namespace std;
const int N=103;
int a[N];
int binarySearch(int num, int low, int high)
{
if(low>high)
return -1;
int mid=(low+high)>>1;
if(a[mid]==num)
return mid;
else if(num<a[mid])
{
high=mid-1;
return binarySearch(num,low,high);
}
else
{
low=mid+1;
return binarySearch(num,low,high);
}
}
int main()
{
int n,m;
while(scanf("%d",&n)!=EOF)
{
for(int i=0;i<n;i++)
scanf("%d",a+i);
sort(a,a+n);
int m;
scanf("%d",&m);
while(m--)
{
int tmp;
scanf("%d",&tmp);
int index=binarySearch(tmp,0,n-1);
if(index==-1)
printf("NO\n");
else
printf("YES\n");
}
}
return 0;
}