查找元素

Problem Description

在给出的数列中(数列中没有重复元素),判断某个元素存在与否。

Input

输入的第1行为示例个数T,对于每个示例第1行为n(n<1000000),表示输入数列中元素的个数,下面1行为n个元素,第3行为查询元素的个数m(m<15000),下面m行为每个需要查询的元素。

Output

输出每个需要查询元素的查询结果,如果查找到输出"Yes",否则输出"No"。

Sample Input

1
5
1 4 5 2 3
2
3
7

Sample Output

Yes
No
#include<iostream>
#include<algorithm>
#include<stdio.h>
using namespace std;
int p[1000010];
int head,rear;
int n;
int lmx(int x)
{
 int mid;
 head=0;rear=n-1;
 while(head<=rear)
 {
   mid=(head+rear)/2;
      if(p[mid]==x) return 1;
   else if(p[mid]<x) head=mid+1;
   else rear=mid-1;
 }
 return 0;
}
int main()
{
 int t,i;
 int m,x;
    scanf("%d",&t);
 while(t--)
 {
  scanf("%d",&n);
  for(i=0;i<n;i++)
  {
   scanf("%d",&p[i]);
  }
  sort(p,p+n);
  scanf("%d",&x);
      for(i=0;i<x;i++)
   {
     scanf("%d",&m);
     if(lmx(m)==1)puts("Yes");
     else puts("No");
   }
 }
 //system("pause");
 return 0;
}
posted @ 2012-12-01 23:57  forevermemory  阅读(139)  评论(0编辑  收藏  举报