Ctrl K

Вершины с изменениями

Сложная
Дан массив высот heights и список запросов requests. Вершиной отрезка называется элемент, который строго больше обоих своих соседей внутри этого отрезка. Первый и последний элементы отрезка вершинами быть не могут. Запросы бывают двух видов: - [1, l, r] — посчитать, сколько вершин в отрезке heights[l..r] (включительно); - [2, i, v] — заменить heights[i] на v. Обработайте запросы по порядку и верните список ответов на запросы первого вида.
Пример 1
heights=[2, 5, 3, 6, 1], requests=[[1, 0, 4], [2, 2, 7], [1, 0, 4]] → [2, 1]

Сначала вершины — 5 и 6, ответ 2. Потом третья высота становится 7: массив [2, 5, 7, 6, 1], вершина теперь одна — 7.

Пример 2
heights=[1, 4, 2, 4, 1], requests=[[1, 1, 3], [1, 0, 2]] → [0, 1]

В отрезке [4, 2, 4] крайние элементы вершинами не считаются, а 2 меньше соседей — ответ 0. В отрезке [1, 4, 2] вершина 4 — ответ 1.

Пример 3
heights=[3, 3, 3], requests=[[2, 1, 4], [1, 0, 2]] → [1]
Ограничения
  • 3 ≤ len(heights) ≤ 10⁵
  • 1 ≤ heights[i] ≤ 10⁵
  • 1 ≤ len(requests) ≤ 10⁵
  • Для [1, l, r]: 0 ≤ l ≤ r ≤ len(heights) − 1
  • Для [2, i, v]: 0 ≤ i ≤ len(heights) − 1, 1 ≤ v ≤ 10⁵
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиКонтур городской застройки СложнаяМеньшие справа СложнаяСуммы отрезков в заданной полосе СложнаяПары с крутым спадом СложнаяТёмный промежуток между фонарями Сложная
загружаем Python…
Вход
heights=[2, 5, 3, 6, 1], requests=[[1, 0, 4], [2, 2, 7], [1, 0, 4]]
Ожидается
[2, 1]

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