背背背
反正我觉得这就是bugfree的lower_bound()和upper_bound()的模板
我也创造不出更好的
背吧
C++ 代码
#include<iostream>
using namespace std;
int a[100010];
int n,k;
//返回 x>=value 的最小值
int lower_bound(int key)
{
int l = 0,r = n-1;
while(l<r)
{
int mid = (l + r + 1)>>1;
if(a[mid]<=key) l = mid;
else r = mid - 1;
}
if(a[l]!=key) return -1;
return l;
}
//返回 x<=value 的最大值
int upper_bound(int key)
{
int l = 0,r = n-1 ;
while(l<r)
{
int mid = (l + r) >> 1;
if(a[mid] >= key) r = mid;
else l = mid + 1;
}
if(a[l]!=key) return -1;
return l;
}
int main()
{
cin>>n>>k;
for(int i=0;i<n;i++) cin>>a[i];
while(k--)
{
int x;
cin>>x;
cout<<upper_bound(x)<<" "<<lower_bound(x)<<endl;
}
}