Given meetings as [start, end) intervals, find the minimum number of rooms needed so that no two overlapping meetings share a room. A meeting ending at 10 and one starting at 10 don't overlap.
Implement min_rooms(meetings), then assign_rooms(meetings): return a list giving each meeting's room number (0, 1, 2…, in input order). Process meetings by start time, ties by end time and then input order. Reuse the lowest-numbered free room each time.