代码求助
  • 板块灌水区
  • 楼主ALANYUEHNV
  • 当前回复2
  • 已保存回复2
  • 发布时间2022/5/23 21:38
  • 上次更新2023/10/28 00:45:02
查看原帖
代码求助
688779
ALANYUEHNV楼主2022/5/23 21:38

第4题 朋友圈 时限:1s 空间:256m 多多很喜欢发朋友圈,至今他已经发了N条朋友圈,并且他的第i条朋友圈获得了ci次点赞。多多听说有一个h指数来衡量朋友圈的质量,h指数是指有至少h条获得了不少于h次点赞的朋友圈的最大整数h。例如,有4条朋友圈获得的点赞次数为 (1,100,2,3),则h指数为2,如果点赞次数为 (1,100,3,3),则h指数为3。

多多想知道自己的h指数是多少。

输入格式 第一行为一个整数N(1<=N<=100000)。

第二行为N个整数,第i个数表示第i条朋友圈获得的点赞次数ci(0<=ci<=100000)。

输出格式 输出一个整数,表示多多的h指数。

输入/输出例子1 输入:

4

1 100 2 3

输出:

2

为什么卡死循环出不来啊

#include<bits/stdc++.h>
using namespace std;
int n,a[100005],l=999999,r=-1,ans,mid;
int main() {
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		cin>>a[i];
		l=min(a[i],l);
		r=max(a[i],r);
	}
	sort(a+1,a+n+1);
	while(l<=r){
		mid=(l+r)/2+1;
		for(int i=1;i<=n;i++) if(a[i]>=mid) ans++;
		if(ans<mid) r=mid-1;
		else l=mid;
		ans=0;
	}
	cout<<mid;
	return 0;
}
2022/5/23 21:38
加载中...