CF1774F2.Magician and Pigs (Hard Version)

省选/NOI-

通过率:0%

时间限制:2.00s

内存限制:256MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

This is the hard version of the problem. The only difference between the two versions is the constraint on nn and xx. You can make hacks only if both versions of the problem are solved.

Little09 has been interested in magic for a long time, and it's so lucky that he meets a magician! The magician will perform nn operations, each of them is one of the following three:

  • 1 x1\ x: Create a pig with xx Health Points.
  • 2 x2\ x: Reduce the Health Point of all living pigs by xx.
  • 33: Repeat all previous operations. Formally, assuming that this is the ii-th operation in the operation sequence, perform the first i−1i-1 operations (including "Repeat" operations involved) in turn.

A pig will die when its Health Point is less than or equal to 00.

Little09 wants to know how many living pigs there are after all the operations. Please, print the answer modulo 998 244 353998\,244\,353.

这是该问题的困难版本。两个版本之间的唯一区别在于对 nn 和 xx 的约束条件。仅当两个版本的问题均被解决时,才允许进行 Hack。

Little09 长期以来对魔法很感兴趣,而他非常幸运地遇到了一位魔术师!这位魔术师将执行 nn 次操作,每次操作为以下三种之一:

  • 1 x1\ x:创建一只具有 xx 点生命值(Health Points)的猪;
  • 2 x2\ x:将所有现存猪的生命值减少 xx;
  • 33:重复之前所有的操作。形式化地说,假设这是操作序列中的第 ii 次操作,则依次执行前 i−1i-1 次操作(包括其中涉及的所有“重复”操作)。

当一只猪的生命值小于等于 00 时,它就会死亡。

Little09 想知道在所有操作执行完毕后,还剩多少只存活的猪。请输出答案对 998 244 353998\,244\,353 取模的结果。

输入格式

The first line contains a single integer nn (1≤n≤8⋅1051\leq n\leq 8\cdot 10^5) — the number of operations.

Each of the following nn lines contains an operation given in the form described in the problem statement. It's guaranteed that 1≤x≤1091\leq x\leq 10^9 in operations of the first two types.

第一行包含一个整数 nn(1≤n≤8⋅1051\leq n\leq 8\cdot 10^5)—— 操作的数量。

接下来的 nn 行中,每行包含一个按题目描述形式给出的操作。保证在前两种类型的操作中,1≤x≤1091\leq x\leq 10^9。

输出格式

Print a single integer — the number of living pigs after all the operations, modulo 998 244 353998\,244\,353.

输出一个整数——所有操作结束后存活的猪的数量,对 998 244 353998\,244\,353 取模。

输入输出样例

  • 输入#1

    4
    1 8
    2 3
    3
    3

    输出#1

    2
  • 输入#2

    6
    1 5
    1 6
    2 2
    3
    1 4
    3

    输出#2

    5
  • 输入#3

    12
    2 1
    1 15
    1 9
    3
    1 12
    2 2
    1 13
    3
    2 1
    1 9
    1 8
    3

    输出#3

    17

说明/提示

In the first example, the operations are equivalent to repeating four times: create a pig with 88 Health Points and then reduce the Health Points of all living pigs by 33. It is easy to find that there are two living pigs in the end with 22 and 55 Health Points.

在第一个例子中,这些操作等价于重复执行四次:创建一只生命值为 88 的猪,然后将所有存活猪的生命值减少 33。很容易发现,最终有两只猪存活,其生命值分别为 22 和 55。

输入解题思路,AI测评打分。不知道怎么写?

首页