AcWing 789. 数的范围
原题链接
简单
作者:
一抹斜阳
,
2020-09-01 19:56:58
,
所有人可见
,
阅读 391
#include<iostream>
using namespace std;
int n,q,e,mid;
const int N = 1e5 + 10;
const int Q = 1e4 + 10;
int a[N];
void find(int x,int l,int r);
int main(){
cin>>n>>q;
int i = 0;
for(i = 0;i<n;i++)
scanf("%d",&a[i]);
while(q--){
scanf("%d",&e);
find(e,0,n-1);
}
return 0;
}
void find(int x,int l,int r){
mid = (l + r)/2;
if(l > r){
printf("-1 -1\n");
return;
}
if(x > a[(l+r)/2])
find(x,mid + 1,r);
else if(x < a[(l+r)/2])
find(x,l,mid - 1);
else{
int t = mid;
while(a[--t] == a[mid]);
printf("%d ",t + 1);
t = mid;
while(a[++t] == a[mid]);
printf("%d\n",t - 1);
return ;
}
}