AcWing 789. 数的范围
原题链接
简单
作者:
Galaxy_06
,
2024-03-27 18:38:08
,
所有人可见
,
阅读 2
右边的左端点-r型 左边的右端点-l型
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
const int N = 100010;
int a[N];
int n, q;
int e;
int main(){
cin >> n >> q;
for(int i = 0; i < n; i++) scanf("%d", &a[i]);
while(q--){
scanf("%d", &e);
// 查询起始值
int l = 0, r = n - 1;
while(l < r){
int m = (l + r) / 2;
if(a[m] >= e) r = m;
else l = m + 1;
}
if(a[l] != e){
printf("-1 -1\n");
continue;
}
printf("%d ", l);
// 查询终止值
l = 0, r = n - 1;
while(l < r){
int m = (l + r + 1) / 2;
if(a[m] <= e) l = m;
else r = m - 1;
}
printf("%d\n", l);
}
return 0;
}