AcWing 789. 数的范围
原题链接
简单
作者:
ls131
,
2020-10-17 13:01:10
,
所有人可见
,
阅读 273
#include<iostream> //找到大区间后 找到第一个合适的点 从另一面找到满足条件后缩小范围
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=100010;
int n,m;
int q[N];
int main(){
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++) scanf("%d",&q[i]);
for(int i=0; i<m;i++){
int x;
scanf("%d",&x);
int l=0,r=n-1; //确定答案的区间范围
while(l<r){
int mid=l+r >> 1;
if(q[mid]>=x) r=mid;
else l=mid+1;
}
if(q[r]==x){
cout<<r<<' ';
r=n-1; //重归区间 左边区间的性质是都要大于等于 右边的区间性质是都要小于等于 最后特判等不等于即可
while(l<r){
int mid=l+r+1 >> 1;
if(q[mid]<=x) l=mid;
else r=mid-1;
}
cout<<l<<endl;
}
else cout<<"-1 -1" <<endl;
}
return 0;
}