# -*- coding:utf-8 -*-
class Solution:
    def GetLeastNumbers_Solution(self, tinput, k):
        # write code here
        # lentinput = len(tinput)
        # a = []
        # if(lentinput < k):
        #     return a
        # tinput.sort()
        # for i in range(k):
        #     a.append(tinput[i])
        # return a

        # 创建或插入最大堆
        def creatMaxHeap(num, maxHeap):
            maxHeap.append(num)
            currentIndex = len(maxHeap) - 1
            while currentIndex != 0:
                parentIndex = (currentIndex - 1) >> 1
                if maxHeap[parentIndex] < maxHeap[currentIndex]:
                    maxHeap[parentIndex], maxHeap[currentIndex] = maxHeap[currentIndex], maxHeap[parentIndex]
                    currentIndex = parentIndex
                else:
                    break
            return maxHeap

        # 调整最大堆,头结点发生改变
        def adjustMaxHeap(num, maxHeap):
            if num < maxHeap[0]:
                maxHeap[0] = num
            index = 0
            maxHeapLen = len(maxHeap)
            while index < maxHeapLen:
                leftIndex = index * 2 + 1
                rightIndex = index * 2 + 2
                lagerIndex = 0
                if rightIndex < maxHeapLen:
                    if maxHeap[rightIndex] < maxHeap[leftIndex]:
                        lagerIndex = leftIndex
                    else:
                        lagerIndex = rightIndex
                elif leftIndex < maxHeapLen:
                    lagerIndex = leftIndex
                else:
                    break
                if maxHeap[index] < maxHeap[lagerIndex]:
                    maxHeap[index], maxHeap[lagerIndex] = maxHeap[lagerIndex], maxHeap[index]
                index = lagerIndex
            return maxHeap

        maxHeap = []
        inputLen = len(tinput)
        if inputLen < k or k <= 0:
            return []

        for i in range(inputLen):
            if i < k:
                maxHeap = creatMaxHeap(tinput[i], maxHeap)
                print(maxHeap)
            else:
                maxHeap = adjustMaxHeap(tinput[i], maxHeap)
        maxHeap.sort()
        return maxHeap


# tinput = [0,1,1,1,4,5,3,7,7,8,10,2,7,8,0,5,2,16,12,1,19,15,5,18,2,2,22,15,8,22,17,6,22,6,22,26,32,8,10,11,2,26,9,12,9,
#           7,28,33,20,7,2,17,44,3,52,27,2,23,19,56,56,58,36,31,1,19,19,6,65,49,27,63,29,1,69,47,56,61,40,43,10,71,60,66,
#           42,44,10,12,83,69,73,2,65,93,92,47,35,39,13,75]
# k = 75
# print(tinput[10])
# s = Solution()
# out = s.GetLeastNumbers_Solution(tinput, k)
# print(out)