class Solution {
public:
int quick_sort(vector<int> &data, int left, int right){
int base = data[left];
while (left < right)
{
while (left < right && data[right] >= base)
--right;
data[left] = data[right];
while (left < right && data[left] <= base)
++left;
data[right] = data[left];
}
data[left] = base;
return left;
}
int findKth(vector<int> a, int n, int K) {
int low = 0;
int high = n -1;
K = n - K;
while (true)
{
int index = quick_sort(a, low, high);
if (index == K)
return a[index];
if (index < K)
low = index + 1;
if (index > K)
high = index - 1;
}
}
};