二分查找有序序列中的x或其后缀
#include<bits/stdc++.h>
using namespace std;
int l,r,n,m,x,a[1001];
int Check(int l,int r){
while (l < r){
int mid = (l + r) / 2;
if (a[mid] >= x) r = mid; else l = mid + 1;
}
return a[l];
}
int main(){
cin >> n >> m;
for(int i = 1;i <= n;i++)
cin >> a[i];
for(int i = 1;i <= m;i++){
cin >> l >> r >> x;
cout << Check(l,r);
}
return 0;
}
二分查找有序序列中的x或其前驱
#include<bits/stdc++.h>
using namespace std;
int l,r,n,m,x,a[1001];
int Check(int l,int r){
while (l < r){
int mid = (l + r +1) / 2;
if (a[mid] < x) l = mid; else r = mid + 1;
}
return a[l];
}
int main(){
cin >> n >> m;
for(int i = 1;i <= n;i++)
cin >> a[i];
for(int i = 1;i <= m;i++){
cin >> l >> r >> x;
cout << Check(l,r);
}
return 0;
}