1
# Runtime: 1741 ms (Top 100.0%) | Memory: 67.86 MB (Top 93.7%)6
self, rooms: List[List[int]], queries: List[List[int]]8
ans = [0] * len(queries)10
# sort queries to handle largest size queries first13
[(size, room, i) for i, (room, size) in enumerate(queries)],14
key=lambda a: (-a[0], a[1], a[2]),18
# sort rooms by descending size19
rooms = deque(sorted(rooms, key=lambda x: -x[1]))21
# current available room ids25
size, room, i = q.popleft()26
# add room ids to candidates as long as top of room size meet the requirements27
while rooms and rooms[0][1] >= size:28
bisect.insort(cands, rooms.popleft()[0])30
# if no room size available, return -134
# else use bisect to find optimal room ids36
loc = bisect.bisect_left(cands, room)39
elif loc == len(cands):44
if room - cands[loc - 1] <= cands[loc] - room