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;
    }
};