Ctrl K

Профиль шатров на ярмарке

Средняя
Вдоль прямой дороги расставлены ярмарочные шатры. Шатёр tents[i] = [start, end, height] высотой height занимает полуинтервал [start, end): точка start входит, точка end — нет. Шатры могут перекрываться. Для каждой точки дороги, над которой есть хотя бы один шатёр, посчитаем среднюю высоту: сумму высот всех шатров над ней, делённую нацело на их количество. Опишите дорогу минимальным числом непересекающихся участков [left, right, average]: на всём полуинтервале [left, right) средняя высота равна average. Соседние участки с одинаковой средней, идущие вплотную, нужно склеить в один. Места, где шатров нет, в ответ не попадают. Участки можно вернуть в любом порядке.
Пример 1
tents=[[0, 6, 3], [4, 8, 6]] → [[0, 4, 3], [4, 6, 4], [6, 8, 6]]

На [0, 4) только первый шатёр — средняя 3. На [4, 6) оба: (3 + 6) // 2 = 4. На [6, 8) только второй — 6.

Пример 2
tents=[[1, 3, 5], [2, 4, 4], [2, 4, 6]] → [[1, 4, 5]]

[1, 2): 5. [2, 3): (5 + 4 + 6) // 3 = 5. [3, 4): (4 + 6) // 2 = 5. Средняя везде 5, и участки идут подряд — склеиваем в один.

Пример 3
tents=[[0, 2, 7], [5, 9, 7]] → [[0, 2, 7], [5, 9, 7]]

Между 2 и 5 шатров нет, поэтому два участка со средней 7 не склеиваются.

Ограничения
  • 1 ≤ len(tents) ≤ 10⁵
  • tents[i] = [start, end, height]
  • 0 ≤ start < end ≤ 10⁸
  • 1 ≤ height ≤ 10⁵
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСтудии для записи СредняяЗадания с перерывом на остывание СредняяМетки вразнобой СредняяУбрать половину списка СредняяОдно мероприятие в день Средняя
загружаем Python…
Вход
tents=[[0, 6, 3], [4, 8, 6]]
Ожидается
[[0, 4, 3], [4, 6, 4], [6, 8, 6]]

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