问题标题: 酷町堂:2779 二分查找5

0
0
已解决
刘济同
刘济同
修练者
修练者

为什么我的程序九十分?

#include<iostream>
using namespace std;

int n,m,t;
int a[100010];

int main()
{
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    while(m--){
        cin>>t;
        int l=1,r=n,mid;
        while(l<r){
            mid=(l+r)/2;
            if(a[mid]>t) r=mid;
            else l=mid+1;
        }
        if(l==n) cout<<-1<<endl;
        else cout<<r<<endl;
    }
}
 


1
已采纳
张瑀涵
张瑀涵
高级光能
高级光能

1.r=n改成r=n+1

 

2.if(l==n) cout<<-1<<endl;
 else cout<<r<<endl;

 改成

 if(a[l]<t) cout<<-1<<endl;
  else cout<<l<<endl;
1
聂振阳
聂振阳
新手守护
新手守护

老师说过r要复制成n+1。

0
叶子煊
叶子煊
中级光能
中级光能

你有两个问题:

1、

r=n

改成

r=n+1

2、

if(l==n) cout<<-1<<endl;
else cout<<r<<endl;

改成

if(a[l]<t) cout<<-1<<endl;
else cout<<l<<endl;

就可以AC了

望采纳!!

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

0
我要回答