代码很简洁,也比较好理解
代码仅供参考
#include<bits/stdc++.h>
using namespace std;
int a[1008611],sum[1008611];
int main(){
int n,l;
cin>>n>>l;
for(int i=1;i<=n;i++){
int num;
cin>>num;
sum[num]++; //用一个数组存所用引用次数的出现次数
}
int t=n,i;
for(i=0;i<n;i++){ //h一定不会超过n,所以循环是0~n
t-=sum[i];
if(t+min(sum[i],l)<=i) break;
}
cout<<i;
return 0;
}