0
点赞
收藏
分享

微信扫一扫

【acwing】789. 数的范围*(二分)

q松_松q 2022-04-05 阅读 51

穿越隧道
在这里插入图片描述

#include <iostream>
#include <algorithm>
#include <cstring>

using namespace std;

const int N = 1e5 + 10;
int a[N];
int n,q,k;
int l, r;
int main(){
	scanf("%d%d",&n,&q);
	for(int i = 0; i < n; i++){
		scanf("%d",&a[i]);
	}
	while(q--){
		int x;
		scanf("%d",&x);
		int ll = 0, rr = n - 1;
		while(ll < rr){
			int mid = (ll + rr) / 2;
			if(a[mid] >= x){
				rr = mid;
			}
			else{
				ll = mid + 1;
			}
		}
		if(a[rr] == x){
			cout << rr <<" "; 
		}
		else{
			cout <<"-1 -1" << endl;
			continue;
		} 
		ll = 0, rr = n - 1;
		while(ll < rr){
			int mid = (ll + rr + 1) / 2;
			if(a[mid] <= x){
				ll = mid;
			}
			else{
				rr = mid - 1;
			}
		}
		cout << rr << endl;
	}
	return 0;
}
举报

相关推荐

0 条评论