Это сложная версия задачи. Единственное различие между двумя версиями — это ограничения на $$$n$$$ и $$$x$$$. Вы можете делать взломы, только если обе версии задачи решены.
Little09 давно интересуется магией, и как же ему повезло, что он встречает фокусника! Фокусник выполнит $$$n$$$ операций, каждая из которых является одной из следующих трех:
Свинья умирает, когда ее очки здоровья становятся меньше или равны $$$0$$$.
Little09 хочет знать, сколько живых свиней осталось после всех операций. Пожалуйста, выведите ответ по модулю $$$998\,244\,353$$$.
Первая строка содержит одно целое число $$$n$$$ ($$$1\leq n\leq 8\cdot 10^5$$$) — количество операций.
Каждая из следующих $$$n$$$ строк содержит операцию, заданную в форме, описанной в условии задачи. Гарантируется, что $$$1\leq x\leq 10^9$$$ в операциях первых двух типов.
Выведите одно целое число — количество живых свиней после всех операций, по модулю $$$998\,244\,353$$$.
4 1 8 2 3 3 3
2
6 1 5 1 6 2 2 3 1 4 3
5
12 2 1 1 15 1 9 3 1 12 2 2 1 13 3 2 1 1 9 1 8 3
17
В первом примере операции эквивалентны повторению следующего четыре раза: создать свинью с $$$8$$$ очками здоровья, а затем уменьшить очки здоровья всех живых свиней на $$$3$$$. Легко видеть, что в конце остаются две живые свиньи с $$$2$$$ и $$$5$$$ очками здоровья.
Название |
---|