#include <iostream>
using namespace std;
int N,m,A[5000005];
//用scanf,printf卡常
template<class T>
void QuickSort(T a[],int first,int end){
int i=first,j=end;
while(i<j){
while(i<j&&a[i]<a[j]){//寻找比a[i]大的第一个数
j--;
}
if(i<j){
swap(a[i++],a[j]);//交换且i往前
}
while(i<j&&a[i]<a[j]){//寻找比a[j]小的第一个数
i++;
}
if(i<j){
swap(a[i],a[j--]);//交换且j往后
}
}
if(m<j) QuickSort(a,first,--j);//当要排的位数小于j,在前半部分找
else if(i<m) QuickSort(a,++i,end);
else{
printf("%d",a[j]);//当当前找的就是第m位输出并退出
exit(0);
}
}
int main() {
scanf("%d%d",&N,&m);
for(int i=0;i<N;++i){
scanf("%d",&A[i]);
}
QuickSort(A,0,N-1);
return 0;
}
![]()