代码
#include<bits/stdc++.h>
using namespace std;
int n,q;
int a[100010];
int q1(int k)
{
int L=1,R=n,mid;
while(L<=R)
{
mid=L+(R-L>>1);
if(a[mid]>=k)
R=mid-1;
else
L=mid+1;
}
if(a[L]==k)
return L-1;
else
return -1;
}
int q2(int k)
{
int l=1,r=n,mid;
while (l < r)
{
int mid = l + r + 1 >> 1;
if (a[mid]<=k) l = mid;
else r = mid - 1;
}
if(a[l]==k)
return l-1;
else
return -1;
}
int main()
{
cin>>n>>q;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
for(int i=1;i<=q;i++)
{
int k;
cin>>k;
cout<<q1(k);
cout<<" "<<q2(k)<<endl;
}
}
核心
二分查找