import heapq
def getGreatestElements(arr, k):
heap = []
ans = []
for i, val in enumerate(arr):
heapq.heappush(heap, val)
if len(heap) > k:
heapq.heappop(heap)
if i + 1 >= k:
ans.append(heap[0])
return ans
# Example:
# n = 4
# k = 2
# arr = [4, 2, 1, 3]
# n = 5
# k = 4
# arr = [3,2,4,5,1]
n= 5
k=2
arr = [3,1,4,5,2]
print(getGreatestElements(arr, k)) # Output: [2, 2, 3]
aW1wb3J0IGhlYXBxCgpkZWYgZ2V0R3JlYXRlc3RFbGVtZW50cyhhcnIsIGspOgogICAgaGVhcCA9IFtdCiAgICBhbnMgPSBbXQogICAgCiAgICBmb3IgaSwgdmFsIGluIGVudW1lcmF0ZShhcnIpOgogICAgICAgIGhlYXBxLmhlYXBwdXNoKGhlYXAsIHZhbCkKICAgICAgICBpZiBsZW4oaGVhcCkgPiBrOgogICAgICAgICAgICBoZWFwcS5oZWFwcG9wKGhlYXApCiAgICAgICAgaWYgaSArIDEgPj0gazoKICAgICAgICAgICAgYW5zLmFwcGVuZChoZWFwWzBdKQogICAgCiAgICByZXR1cm4gYW5zCgojIEV4YW1wbGU6CiMgbiA9IDQKIyBrID0gMgojIGFyciA9IFs0LCAyLCAxLCAzXQojIG4gPSA1CiMgayA9IDQKIyBhcnIgPSBbMywyLDQsNSwxXQpuPSA1Cms9MgphcnIgPSBbMywxLDQsNSwyXQpwcmludChnZXRHcmVhdGVzdEVsZW1lbnRzKGFyciwgaykpICAjIE91dHB1dDogWzIsIDIsIDNdCg==