Ctrl K

Переключатели и выплаты

Сложная
Даны два массива одинаковой длины n: switches из нулей и единиц (переключатель выключен или включён) и funds — сколько денег на каждом счёте. Затем по порядку выполняются запросы queries, каждый из трёх чисел: - [1, l, r] — переключить состояние всех переключателей с индексами от l до r включительно: 0 становится 1, а 1 становится 0; - [2, p, 0] — выплата: к каждому счёту i, у которого переключатель включён, прибавляется p; - [3, 0, 0] — узнать текущую сумму всех счетов. Верните список ответов на запросы третьего типа в порядке их появления.
Пример 1
switches=[0, 1, 1, 0], funds=[5, 0, 2, 1], queries=[[2, 10, 0], [3, 0, 0], [1, 0, 1], [2, 1, 0], [3, 0, 0]] → [28, 30]

Включены 2 переключателя, выплата по 10 добавляет 20: сумма 8 + 20 = 28. Затем переключатели 0 и 1 меняют состояние — включены 0 и 2, выплата по 1 добавляет ещё 2: 30.

Пример 2
switches=[1, 1], funds=[3, 4], queries=[[1, 0, 1], [2, 100, 0], [3, 0, 0]] → [7]

После переключения все выключены, выплата никому не достаётся: сумма остаётся 7.

Ограничения
  • 1 ≤ n ≤ 10⁵
  • switches[i] — 0 или 1
  • 0 ≤ funds[i] ≤ 10⁹
  • 1 ≤ len(queries) ≤ 10⁵
  • 0 ≤ l ≤ r < n
  • 0 ≤ p ≤ 10⁶
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиКонтур городской застройки СложнаяМеньшие справа СложнаяСуммы отрезков в заданной полосе СложнаяПары с крутым спадом СложнаяТёмный промежуток между фонарями Сложная
загружаем Python…
Вход
switches=[0, 1, 1, 0], funds=[5, 0, 2, 1], queries=[[2, 10, 0], [3, 0, 0], [1, 0, 1], [2, 1, 0], [3, 0, 0]]
Ожидается
[28, 30]

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