В примере было указано что можно выехать и въехаьть в комнату в тот же день. То есть освобождение комнаты происходит раньше ее заселения (при условии что даты въезда и выезда одинаковы)
Поэтому создается массив событий с метками +1 (въезд постояльца) -1 (выезд) и сортируется по кортежу из даты и метки. Это обеспечивает сортировку по дате, а при случае совпадения даты сначала ставится выезд.
Ищется наибольшее число гостей в отеле, которое и будет означать максимальное число комнат
Работает по принципу поиска ближайшего ключа для каждого робота и затем выбора такого ключа, до которого идти меньше всего Этот алгоритм не оптимален так как он не учитывет то что подбор одних ключей может сократить путь к другим
Можно доработать, если на каждой итерации каждый робот будет рассматривать все доступные ключи. Затем будет происходить ветвление и в конце нужно будет сравнить число итераций на каждой ветке