bookings, где bookings[i] = [start, end] — занятый отрезок времени, включая оба конца. Отрезки отсортированы по началу и не пересекаются друг с другом.
Поступила новая бронь extra = [start, end]. Добавьте её в расписание: все отрезки, которые с ней пересекаются или касаются её хотя бы в одной точке, слейте с ней в один.
Верните новое расписание — тоже отсортированное и без пересечений. Изменять bookings на месте не обязательно, можно вернуть новый список.bookings=[[2, 4], [9, 12], [15, 20]], extra=[5, 10] → [[2, 4], [5, 12], [15, 20]]
Новая бронь [5, 10] пересекается с [9, 12] и сливается с ней в [5, 12]; с [2, 4] она не пересекается.
bookings=[[1, 3], [6, 8]], extra=[3, 6] → [[1, 8]]
Отрезки с общей точкой сливаются: всё превращается в [1, 8].
bookings=[], extra=[7, 7] → [[7, 7]]
Броней не было — остаётся только новая.
extrabookings меньше начала следующегоbookings=[[2, 4], [9, 12], [15, 20]], extra=[5, 10]
[[2, 4], [5, 12], [15, 20]]
«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 169 тестов на сервере, включая скрытые.