求助
  • 板块灌水区
  • 楼主void_sans
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/11/20 17:54
  • 上次更新2024/11/20 19:58:46
查看原帖
求助
1558094
void_sans楼主2024/11/20 17:54

为什么运行错误???

题目描述
洋葱战士有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;
}

2024/11/20 17:54
加载中...