#include<iostream>
using namespace std;
const int N=100010;
int n,m;
int q[N],p[N];
int main()
{
cin>>n>>m;
for(int i=0;i<n;i++)
{
cin>>q[i];
}
while(m--)
{
int x; cin>>x;//读入每次要找的数字
int l=0;int r=n-1;
while(l<r)
{
int mid=(l+r)/2;
if(q[mid]>=x) r=mid;//找这个数最前的值 当mid大于我们要找的值 将r给mid 范围就在左边去了 mid<x 就相反
else l=mid+1;
}
if(q[l]!=x) cout<<"-1 -1"<<endl;//当这个值没有 就返回—1 -1
else
{
cout<<l<<' ';//否则就输出
int l=0;int r=n-1;
while(l<r)
{
int mid=(l+r+1)/2;
if(q[mid]<=x) l=mid;
else r=mid-1;
}
cout<<l<<endl;
}
}
return 0;
}
数的范围 二分法 c++
最新推荐文章于 2024-09-27 11:26:03 发布