#include <iostream>
using namespace std;
int n,k,ans,num=0;
int a[10000000];
void px(int q[],int l,int r){
if(l>=r)return;
int temp=q[(l+r)/2],i=l-1,j=r+1;
while (i<j){
do i++;while (q[i]<temp);
do j--;while (q[j]>temp);
if(j>i){swap(a[i],a[j]);}
}
px(q,l,j);
px(q,j+1,r);
return;
}
int main(){
cin >> n >>k;
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
px(a,0,n-1);
ans=0;
if(k==0)ans=0;
if(k>0){
for(int i=1;i<n;i++){
if(a[i]>a[ans] )ans=i;num++;
if(num==k)break;
}
}
cout<<a[ans];
return 0;
}
只过了前三个点,怎样优化才能不超时
P1923