P2249 【深基13.例1】查找(二分查找)

https://www.luogu.com.cn/problem/P2249
//尋找左側邊界的二分搜索
#include<bits/stdc++.h>
using namespace std;
#define N 1000005
#define ll long long
ll a[N], l, r, mid;
int main(){
	int n, m, key;
	cin >> n >> m;
	for(int i=1; i<=n; i++)
		cin >> a[i];
	while(m--){
		cin >> key;
		l = 1, r = n;
		while(l < r){
			mid = l + ((r-l)>>1);
			if(a[mid] >= key)
				r = mid;
			else if(a[mid] < key)
				l = mid + 1;
		}
		if(a[r] == key)
			cout << r << " ";
		else
			cout << "-1 ";
	}
	return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章