第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;
}