class Solution {
public:
    int getStandard(vector<int>& array, int low, int high)
    {
        int key = array[low];
        while(low < high)
        {
            while(low < high && array[high] >= key)
            {
                high--;
            }
            if (low < high)
            {
                array[low] = array[high];
            }
            while(low < high && array[low] <= key)
            {
                low++;
            }
            if (low < high)
            {
                array[high] = array[low];
            }
        }
        array[low] = key;
        return low;
    }


    void quickSort(vector<int>& array, int low, int high)
    {
        if (low < high)
        {
            int standard = getStandard(array, low, high);
            quickSort(array, low, standard - 1);
            quickSort(array, standard + 1, high);
        }
    }


    vector<int> GetLeastNumbers_Solution(vector<int> input, int k) {
        int len = input.size();
        if (k > len)
        {
            return { };
        }

        quickSort(input, 0, len - 1);

        vector<int> arr;
        for(int i = 0; i < k; i++)
            arr.push_back(input[i]);

        return arr;

    }
};