二分法

 

 

 

 

 

 #include<iostream>

using namespace std;

const int N=1e5+10;

int a[N],st[N];

int num=0;

int main(){

int n,q;

cin>>n>>q;

for(int i=1;i<=n;i++){

cin>>a[i];

st[a[i]]==1;

}

while(q--){

int k;

cin>>k;

 

if(st[x]==0){//判断输入的值是否在数组里

cout<<"-1 -1\n";

continue;

}

int l=1,r=n;

while(l<r){

int mid=(l+r)/2;//求左边界

if(a[mid]>=k){

r=mid;

}else

l=mid+1;

}

cout<<l-1<<" ";//从0开始计数

 

l=1,r=n;

while(l<r){

int mid=(l+r+1)/2;//求右边界

if(a[mid]<=k){

l=mid;

}else

r=mid-1;

}

cout<<r-1<<endl;

}

}

 

posted @ 2023-03-09 15:46  chenxinyue  阅读(14)  评论(0编辑  收藏  举报