#abc158f. [abc158_f]Removing Robots

[abc158_f]Removing Robots

题目描述

在数轴上有 NN 个编号为 11NN 的机器人。机器人 ii 放置在坐标 XiX_i 处。当机器人被激活时,它会向正方向移动距离 DiD_i,然后从数轴中移除。所有机器人以相同的速度移动,且它们的大小可以忽略不计。

淘汰喜欢恶作剧的男孩可以任意多次(可能为零次)执行以下操作,只要数轴上还有机器人存在:

  • 选择一个机器人并激活它。在有机器人移动时,不能进行此操作。

当机器人 ii 移动时,如果它触碰到数轴范围 \[Xi,Xi+Di)\[X_i, X_i + D_i) 上仍然存在的另一个机器人 jj,那么机器人 jj 也会被激活并开始移动。这个过程会递归地重复下去。

在淘汰喜欢恶作剧的男孩执行了一定次数的操作后,数轴上还有多少种可能的机器人剩余集合?由于可能的数量很大,计算结果对 998244353998244353 取模。

约束条件

  • 1N2×1051 \leq N \leq 2 \times 10^5
  • \-109Xi109\-10^9 \leq X_i \leq 10^9
  • 1Di1091 \leq D_i \leq 10^9
  • XiXj(ij)X_i \neq X_j (i \neq j)
  • 输入中的所有值均为整数。

输入

从标准输入读取输入数据,输入格式如下:

NN X1X_1 D1D_1 :: XNX_N DND_N

输出

打印在淘汰喜欢恶作剧的男孩执行了一定次数的操作后,在数轴上还有多少种可能的机器人剩余集合,结果对 998244353998244353 取模。

示例输入 1

2
1 5
3 3

示例输出 1

3

在数轴上有三种可能的机器人剩余集合:1,2\\{1, 2\\}1\\{1\\}\\{\\}

可以通过以下方式实现:

  • 如果淘汰喜欢恶作剧的男孩什么都不激活,机器人 1,2\\{1, 2\\} 将保留。

  • 如果淘汰喜欢恶作剧的男孩激活机器人 11,它会在移动时激活机器人 22,之后数轴上将没有任何机器人。这个状态也可以通过激活机器人 22 然后激活机器人 11 来实现。

  • 如果淘汰喜欢恶作剧的男孩激活机器人 22 并完成操作,机器人 1\\{1\\} 将保留。

示例输入 2

3
6 5
-1 10
3 3

示例输出 2

5

在数轴上有五种可能的机器人剩余集合:1,2,3\\{1, 2, 3\\}1,2\\{1, 2\\}2\\{2\\}2,3\\{2, 3\\}\\{\\}

示例输入 3

4
7 10
-10 3
4 3
-4 3

示例输出 3

16

没有机器人会影响其他机器人。

示例输入 4

20
-8 1
26 4
0 5
9 1
19 4
22 20
28 27
11 8
-3 20
-25 17
10 4
-18 27
24 28
-11 19
2 27
-2 18
-1 12
-24 29
31 29
29 7

示例输出 4

110

记得将结果对 998244353998244353 取模。