class Solution {
public:
int partition(vector<int> &a,int left,int right){
int i = left;
for(int j = left + 1;j <= right;++j){
if(a[j] >= a[left])
swap(a[++i],a[j]);
}
swap(a[left],a[i]);
return i;
}
int findKth(vector<int> a, int n, int K) {
int left = 0,right = a.size() - 1;
while(1){
int mid = partition(a,left,right);
if(mid == K - 1)
return a[mid];
else if(mid < K)
left = mid + 1;
else
right = mid - 1;
}
return 0;
}
};