题目描述
在一个递增的序列里,查找元素是否存在,若存在输出YES,不存在输出NO.
输入
本题多组数据,首先输入一个数字n(n>=100000),然后输入n个数,数据保证数列递增,然后再输入一个查找数字。
输出
若存在输出YES,不存在输出NO.
示例输入
4 1 3 5 8 3
示例输出
YES
- #include <iostream>
- #include <algorithm>
- using namespace std;
- int main()
- {
- int a[100001],mid,i,key,flag;
- int n,m,j;
- while(cin>>n)
- {
- flag=0;
- int low=0;
- int high=n-1;
- for(i=0;i<n;i++)
- {
- cin>>a[i];
- }
- sort(a,a+n);
- cin>>key;
- while(low<=high)
- {
- mid=(low+high)/2;
- if(a[mid]==key)
- {
- cout<<"YES"<<endl;
- flag=1;
- break;
- }
- else if(a[mid]>key) high=mid-1;
- else low=mid+1;
- }
- if(flag==0) cout<<"NO"<<endl;
- }
- return 0;
- }