cjweffort

博客园 首页 联系 订阅 管理

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;
}


posted on 2013-03-02 12:08  cjweffort  阅读(164)  评论(0编辑  收藏  举报