已知有序的序列,比如:2,3,3,5,9,9,9,12,12,13,15,22,22,22,22,25,25,23,91,95
有整数x,比如: x=23
有整数x,比如: x=23
要求找到一个刚好比x稍微大一点的元素位置
#include<iostream>
using namespace std;
#define maxn 10000
int a[maxn];
void get_pos(int x,int n){
if(a[n-1]<x){cout<<-1<<endl;return ;}
int middle=0;
int left=0,right=n;
while(left<right-1){
middle=(left+right)/2;
if(a[middle]<=x){
left=middle;
}
else
right=middle;
}
if(a[middle]==x){
middle++;
}
if(middle<n)
cout<<a[middle]<<endl;
else
cout<<-1<<endl;
}
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
}
int x;
cin>>x;
get_pos(x,n);
return 0;
}