为什么运行错误???
题目描述
洋葱战士有n袋洋葱,编号为1-n。洋葱战士有强迫症,所以他的第i袋洋葱的个数必定不超过第i+1袋。现在有强迫症的他想要找到洋葱个数为k的袋子,如果有多个这样的袋子,那么需要找到编号最小的那袋,如果没有这样的袋子,那么只能遗憾的输出-1,他绝不会拿其他袋子代替。
输入
第一行:两个正整数n和k,n范围[1,10000000],k范围[1,500000000]。
第二行:n个正整数,范围[1,500000000]。
输出
一行:编号或-1。
样例输入 复制
14 8
2 4 5 5 5 7 8 8 8 8 8 14 15 15
样例输出 复制
7
代码:
#include<bits/stdc++.h>
using namespace std;
int n,m,a[100000005],b,len=0;
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
cin>>a[i];
int l=1,r=n;
while(l<=r)
{
int mid=(l+r)/2;
if(m==a[mid])
{
cout<<mid;
return 0;
}
if(m>a[mid])
l=mid+1;
if(m<a[mid])
r=mid-1;
}
cout<<-1;
return 0;
}