#include<iostream>#include<vector>#include<algorithm>usingnamespace std;constint NOT_FOUND =-1;
vector<int> num;template<typename Comparable>intbinarySearch(const vector<Comparable>& a,const Comparable & x){
int low =0, high = a.size()-1;while(low <= high){
int mid =(low + high)/2;if(a[mid]< x) low = mid +1;elseif(a[mid]> x) high = mid -1;elsereturn mid;}return NOT_FOUND;}intmain(){
int n, t, x;
cin >> n;for(int i =0; i < n; i++){
cin >> t;
num.push_back(t);}sort(num.begin(), num.end());
cin >> x;int p =binarySearch(num, x);
cout << p << endl;return0;}
#include<stdio.h>#include<assert.h>#define LEN 8int a[LEN]={
2,5,7,13,14,16,17,21};intis_sorted(){
int i, sorted =1;for(i =1; i < LEN; i++)
sorted = sorted && a[i-1]<= a[i];return sorted;}intjudge(int left,int right,int number){
int i;for(i =0; i < LEN; i++){
if(i >= left && i <= right)continue;if(a[i]== number)return0;}return1;}intbinarysearch(int number){
int mid, left =0, right = LEN -1;assert(is_sorted());while(left <= right){
assert(judge(left, right, number));
mid =(left + right)/2;if(a[mid]< number)
left = mid +1;elseif(a[mid]> number)
right = mid -1;elsereturn mid;}assert(judge(left, right, number));return-1;}intmain(void){
int number;scanf("%d",&number);printf("%d\n",binarysearch(number));return0;}5,17 Top