AcWing 3745. 牛的学术圈 I
原题链接
简单
作者:
自律懒人
,
2024-04-01 21:49:02
,
所有人可见
,
阅读 2
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 1e5+10;
int a[N];
int n,m;
bool check(int mid)//有mid篇论文引用次数大于mid
{
int num=0;
int m1=m;
for(int i=0;i<n;i++)
{
if(a[i]>=mid) num++;//记录超过引用mid的文章
else if(a[i]+1>=mid&&m1) {//当a[i]>=mid时,引用次数大于mid的文章加一
m1--;
num++;
}
}
if(num>=mid) return true;
else return false;
}
int main()
{
cin>>n>>m;
for(int i=0;i<n;i++) cin>>a[i];
int l=0,r=1e5;
while(l<r)
{
int mid=l+r+1>>1;
if(check(mid)) l=mid;
else r=mid-1;
}
cout<<l<<endl;
return 0;
}