Ctrl K

Полосы смешанной краски

Средняя
Художник красит длинную узкую ленту, которую удобно представлять числовой прямой. Он сделал несколько мазков: strokes[i] = [start, end, color] означает, что полуинтервал [start, end) (точка start входит, end — нет) покрыт краской номер color. Все номера красок различны. Там, где мазки перекрываются, краски смешиваются, и цвет участка — это набор всех красок, лежащих на нём. Вместо самого набора будем записывать сумму номеров красок в нём. Опишите готовую ленту минимальным числом непересекающихся полуинтервалов [left, right, mix], где mix — сумма номеров красок на [left, right). Соседние участки нельзя склеивать, если наборы красок на них разные, даже когда суммы совпадают. Непокрашенные места в ответ не включайте. Полуинтервалы можно вернуть в любом порядке.
Пример 1
strokes=[[2, 6, 4], [4, 9, 10]] → [[2, 4, 4], [4, 6, 14], [6, 9, 10]]

На [2, 4) лежит только краска 4, на [4, 6) смешались 4 и 10 (сумма 14), на [6, 9) осталась только 10.

Пример 2
strokes=[[1, 3, 7], [5, 8, 2]] → [[1, 3, 7], [5, 8, 2]]

Между 3 и 5 краски нет, этот кусок в ответ не попадает.

Пример 3
strokes=[[1, 5, 3], [1, 5, 8], [5, 9, 11]] → [[1, 5, 11], [5, 9, 11]]

У обоих кусков сумма 11, но наборы красок разные ({3, 8} и {11}), поэтому склеивать их в один [1, 9) нельзя.

Ограничения
  • 1 ≤ len(strokes) ≤ 2·10⁴
  • len(strokes[i]) == 3
  • 0 ≤ start < end ≤ 10⁵
  • 1 ≤ color ≤ 10⁹
  • Все color различны
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСколько цветёт в день визита СложнаяРазложить анаграммы по группам СредняяБольше трети голосов СредняяСтудии для записи СредняяСамый длинный отрезок с заданной суммой Средняя
загружаем Python…
Вход
strokes=[[2, 6, 4], [4, 9, 10]]
Ожидается
[[2, 4, 4], [4, 6, 14], [6, 9, 10]]

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