题目描述
数的范围
搜索某个数,输出他出现的起始坐标和最后一次出现的终止坐标
样例
#include<iostream>
using namespace std;
const int N=1000000;
int n;
int q[N];
int m;
int main()
{
cin>>n>>m;
for(int i=0;i<n;i++)
cin>>q[i];
//设置在搜索数量条件里
while(m--)
{
//输入被搜索的数
int x;
cin>>x;
//设置边界数值
int l=0,r=n-1;
while(l<r)
{
int mid=(l+r)>>1;
//限制在左右两边寻找 先左:先输出出现的起始坐标
if(q[mid]>=x) r=mid;
else l=mid+1;
}
//数组的第一个数都不是所要找的数,则输出-1
if(q[l]!=x) cout<<"-1 -1"<<endl;
else
{
cout<<l<<" ";
int l=0,r=n-1;
while(l<r)
{
int mid=(l+r+1)>>1;
if(q[mid]<=x) l=mid;
else r=mid-1;
}
//后右,输出出现最后一次的终止坐标
cout<<l<<endl;
}
}
return 0;
}