Ctrl K

Коробка в коробке

Сложная
На складе лежат плоские картонные коробки. Коробка boxes[i] = [w, h] имеет ширину w и высоту h. Одну коробку можно вложить в другую, только если она **строго** меньше и по ширине, и по высоте. Поворачивать коробки нельзя: ширина остаётся шириной. Из коробок собирают «матрёшку» — цепочку, где каждая коробка вложена в следующую. Верните наибольшее число коробок в такой цепочке. Перебор всех пар за O(n²) здесь слишком медленный — ищите решение за O(n log n).
Пример 1
boxes=[[4, 9], [3, 2], [7, 10], [4, 5]] → 3

Цепочка [3, 2] → [4, 5] → [7, 10]: каждая коробка строго меньше следующей и по ширине, и по высоте. Коробки [4, 5] и [4, 9] одной ширины, поэтому вместе в цепочку не попадут.

Пример 2
boxes=[[2, 8], [5, 3], [9, 1]] → 1

Чем шире коробка, тем она ниже, так что ни одна не помещается в другую. Ответ — 1.

Пример 3
boxes=[[6, 6], [6, 6]] → 1
Ограничения
  • 1 ≤ len(boxes) ≤ 10⁵
  • boxes[i] — пара [w, h]
  • 1 ≤ w, h ≤ 10⁵
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСтрогий подъём из запасных чисел СложнаяСамый выгодный набор подработок СложнаяСамые выгодные выступления СложнаяПодъём по строкам и столбцам СложнаяСлова, спрятанные в тексте Средняя
загружаем Python…
Вход
boxes=[[4, 9], [3, 2], [7, 10], [4, 5]]
Ожидается
3

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 99 тестов на сервере, включая скрытые.