可以用二分答案的方法 $(O(n \log t))$,其中 $t$ 为值域
#include<bits/stdc++.h>
using namespace std;
int n,k,a[100009],l=1,r=1e9,m;
inline bool check(){
int t=0;
for(int i=0;i<n;++i) if(a[i]<=m) ++t;
return t>=k;
}
int main(){
cin>>n>>k;
for(int i=0;i<n;++i) cin>>a[i];
while(l<r){
if(m=(l+r)>>1,check()) r=m;
else l=m+1;
}
cout<<l;
}
orz