题目链接:https://www.acwing.com/problem/content/description/791/
题目如下:
#includeusing namespace std; const int N=100010; int n,q; int a[N]; //思路:对左右边界分别进行二分,分别找到左右的值不等于x的那个边界 //注: 当满足条件时为l=mid,则初始mid需+1;若满足条件为r=mid,则初始mid不需+1,且最终找到的目标值都在l中 int main(){ cin>>n>>q; for(int i=0;i >a[i]; while(q--){ int x; cin>>x; //找左边界,二分模板一:区间为[l,mid]和[mid+1,r] int l=0,r=n-1; while(l >1; if(a[mid]>=x) r=mid; else l=mid+1; } if(a[l]!=x) cout<<"-1 -1"< >1; if(a[mid]<=x) l=mid; else r=mid-1; } cout<



