Boundary invariant

Top-K 상태 전이는 fill, compare, replace/drop 세 가지다

K칸이 차기 전에는 넣고, 찬 뒤에는 새 값과 힙 루트만 비교한다.

1 fill

heap size < K면 비교 없이 넣는다.

2 compare

heap[0]은 현재 Top-K의 경계값이다.

3 replace/drop

x > heap[0]이면 교체

x ≤ heap[0]이면 버림

예외처리이유
K=0빈 결과유지할 후보 칸이 없다.
K>N가능한 값만 정렬없는 후보를 채우지 않는다.
동점score 외 보조 키 고정출력 순서를 재현 가능하게 만든다.
window만료된 원소 제거전역 Top-K와 섞이지 않는다.

핵심: 루트는 “현재 살아남은 후보 중 가장 약한 값”이므로, 새 후보는 루트와만 비교하면 된다.