Даны два списка, каждый из которых содержит N интервалов (подмножество числовой прямой), каждый интервал имеет форму начальной и конечной точек. Сколько пар этих интервалов из одного списка содержат интервалы из другого списка?
Например:
Если список A равен {(1,7), (2,9)}
, а список B - {(3,6), (5,8)}
Тогда количество пар, где у A есть интервал, содержащий интервал в B, будет 3 пары:
(1,7),(3,6)
(2,9)(3,6)
(2,9)(5,8)
Цель состоит в том, чтобы выстрелить за O (n log n).
В настоящее время мой алгоритм состоит в том, чтобы сначала отсортировать по координате x и принять это как один список. Затем отсортируйте список по координате y и посчитайте инверсии между двумя списками. Но у меня вопрос: почему это работает? Любое понимание будет оценено.
В настоящее время я визуализирую следующий геометрический образ (где каждое пересечение линий является счетчиком инверсии числа):
Примечание: я не уверен, как проверять инверсии в списке списка. Просто пытаюсь найти подход, который дал бы O (n log n). Если есть другие подходы, рад выслушать предложения.