题目描述
与Y总代码有些许不同,感觉我这个我更容易理解一点
C++ 代码
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 100010;
int q[N],n,k;
int findX(int i ,int j){
if(i == j) return q[i];
int l = i - 1, r = j + 1,mid = (l + r) / 2;
int x = q[mid];
while(l < r){
do ++ l; while(q[l] < x);
do -- r; while(q[r] > x);
if(l < r) swap(q[l],q[r]);
}
if(r >= k)
return findX(i,r);
else
return findX(r + 1,j);
}
int main(){
cin >> n >> k;
for(int i = 0;i < n;++i)
cin >> q[i];
--k;
cout << findX(0,n-1) << endl;
return 0;
}