AcWing 789. 数的范围
原题链接
简单
作者:
小小瓷丁
,
2021-04-05 18:18:03
,
所有人可见
,
阅读 336
#include <iostream>
using namespace std;
int a[100010], x;
int n, q;
//查找不小于x的第一个位置
int bsearch1(int l, int r){
while(l<r){
int mid = (l+r)>>1;
if(a[mid]<x) l = mid+1;
else r = mid;
}
return l;
}
//查找不大于x的最后一个位置
int bsearch2(int l, int r){
while(l<r){
int mid = (l+r+1)>>1;
if(a[mid]<=x) l = mid;
else r = mid-1;
}
return l;
}
int main(){
cin>>n>>q;
for(int i=0;i<n;i++){
cin>>a[i];
}
for(int i=0;i<q;i++){
cin>>x;
int c = bsearch1(0, n-1);
int d = bsearch2(0, n-1);
if(x==a[c]) cout<<c<<" "<<d<<endl;
else cout<<-1<<" "<<-1<<endl;
}
return 0;
}