Ctrl K

Гирлянда-дерево

Средняя
Гирлянда состоит из n ламп с номерами от 1 до n, соединённых в дерево: лампа 1 — корень, а родитель лампы v > 1 — лампа с номером v // 2 (деление с округлением вниз). Например, у лампы 1 дети 2 и 3, у лампы 3 — дети 6 и 7. Сначала все лампы выключены. Затем по очереди выполняются переключения из списка toggles: переключение x меняет состояние лампы x и всех её потомков (горевшие гаснут, погашенные загораются). Верните, сколько ламп горит после всех переключений.
Пример 1
n=6, toggles=[2, 1] → 3

Переключение 2 зажигает лампы 2, 4, 5. Переключение 1 меняет все шесть: 2, 4, 5 гаснут, а 1, 3, 6 загораются. Горят три лампы.

Пример 2
n=4, toggles=[3, 3, 4] → 1

Двойное переключение 3 ничего не меняет. Переключение 4 зажигает только лампу 4 — у неё нет потомков.

Ограничения
  • 1 ≤ n ≤ 10⁵
  • 1 ≤ len(toggles) ≤ 10⁵
  • 1 ≤ toggles[i] ≤ n
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиДерево глазами наблюдателя справа СредняяДерево по столбцам СредняяПервый на нижнем этаже СредняяМаксимум на каждом уровне дерева СредняяВставить уровень в дерево Средняя
загружаем Python…
Вход
n=6, toggles=[2, 1]
Ожидается
3

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