Given a stream of obstacle readings, where each reading is a pair (obstacle_id, distance), implement a function that returns the k closest obstacles seen so far. If the same obstacle_id appears multiple times, treat each reading independently. Return the result ordered from closest to farthest.
Example 1:
Input: readings = [[101, 7], [102, 3], [103, 5], [104, 2]], k = 2
Output: [[104, 2], [102, 3]]
Explanation: The two smallest distances are 2 and 3.
Example 2:
Input: readings = [[1, 4], [2, 4], [3, 1]], k = 2
Output: [[3, 1], [1, 4]]
Explanation: The closest obstacle is 3, and one of the distance-4 readings fills the second slot.
1 <= len(readings) <= 10^51 <= k <= len(readings)0 <= distance <= 10^9obstacle_id is an integerobstacle_id