import heapq

def smallest_k(values, k):
    if k <= 0:
        return []
    heap = []
    for value in values:
        heapq.heappush(heap, -value)
        if len(heap) > k:
            heapq.heappop(heap)
    return sorted(-value for value in heap)
