AcWing 789. 数的范围
原题链接
简单
作者:
minux
,
2020-04-18 22:27:37
,
所有人可见
,
阅读 475
#include <bits/stdc++.h>
using namespace std;
int main(){
// 使用两次二分法求解
int n;
int k;
cin>>n>>k;
int a[n];
for(int i=0; i<n; ++i) cin>>a[i];
while(k--){
int x;
cin>>x;
// 判断起始位置
int l=0;
int r=n-1;
while(l<r){
int mid = l+(r-l)/2;
if(a[mid]>=x) r=mid;
else l=mid+1;
}
if(a[l]==x) cout<<l<<" ";
else{
cout<<-1<<" "<<-1<<endl;
continue;
}
// 判断结束位置
l=0;
r=n-1;
while(l<r){
int mid=l+(r-l+1)/2;
if(a[mid]<=x) l=mid;
else r=mid-1;
}
cout<<l<<endl;
}
return 0;
}