#include<iostream>
#include<algorithm>
/*int ans1=lower_bound(a,a+n,x)-a;
//返回数组中第一个大于或等于被查数的值
int ans2=upper_bound(a,a+n,x)-a;
//返回数组中第一个大于被查数的值
*/
using namespace std;
int main()
{
int n;
cin>>n;
int q;
cin>>q;
int *a=new int[n];
for(int i=0;i<n;i++)
{
cin>>a[i];
}
int k;
while(q--)
{cin>>k;
int ans1=lower_bound(a,a+n,k)-a; //返回数组中第一个大于或等于被查数的值
int ans2=upper_bound(a,a+n,k)-a; //返回数组中第一个大于被查数的值
if (a[ans1]!=k)
{
cout<<"-1 -1\n";
continue;
}
else cout<<ans1<<" "<<ans2-1<<endl; //下标减一
}
}
二分 lower_bound/upper_bound ——蒟蒻入门~毫无防备地流下了属于弱者的眼泪。·。·。
最新推荐文章于 2024-02-24 22:43:27 发布