思路来源:二分算法传送门
#include<iostream>
using namespace std;
int arr[100100];
int qrr[10010];
int main(){
int n,q;
cin>>n>>q;
for(int i=0;i<n;i++){
cin>>arr[i];
}
for(int i=1;i<=q;i++){
cin>>qrr[i];
}
int qflag=1;
while(qflag!=q+1){
int l=-1,r=n;
while(l+1!=r){
int m=(l+r)/2;
if(arr[m]==qrr[qflag]){
r=m;
}
else if(arr[m]<qrr[qflag]){
l=m;
}
else{
r=m;
}
}
if(arr[r]!=qrr[qflag]){
cout<<"-1 -1"<<endl;
}
else{
cout<<r;
int l=-1,r=n;
while(l+1!=r){
int m=(l+r)/2;
if(arr[m]==qrr[qflag]){
l=m;
}
else if(arr[m]<qrr[qflag]){
l=m;
}
else{
r=m;
}
}
cout<<" "<<l<<endl;
}
qflag++;
}
return 0;
}