二分+双指针O(nlogn)
#include<bits/stdc++.h>
#define LL long long
#define x first
#define y second
#define de(x) cout<<#x<<" = "<<x<<" "
#define deg(x) cout<<#x<<" = "<<x<<endl
using namespace std;
const int N=1e5+10;
typedef pair<int,int> PII;
int a[N];
int n,m;
bool check(int mid)
{
int cnt=0;
for(int i=1;i<=n;i++)
{
if(a[i]>=mid)cnt++;
}
return cnt>=mid;
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n>>m;
for(int i=1;i<=n;i++)cin>>a[i];
int l=0,r=1e5+1;
while(l+1!=r)
{
int mid=l+r>>1;
if(check(mid))l=mid;
else r=mid;
}
int cnt1=0,cnt2=0;
int res=l;
for(int i=1;i<=n;i++)
if(a[i]>res)cnt2++,cnt1++;
else if(a[i]>=res)cnt1++;
if(min((cnt1-cnt2),m)>=res+1-cnt2)res++;
cout<<res<<endl;
return 0;
}