#abc306d. [abc306_d]Poisonous Full-Course

[abc306_d]Poisonous Full-Course

题目描述

Takahashi决定在一家餐馆享用一顿包含NN道菜的大餐。 第ii道菜是:

  • 如果Xi=0X_i=0,它是一道有着美味度为YiY_i解毒菜
  • 如果Xi=1X_i=1,它是一道有着美味度为YiY_i有毒菜

当Takahashi吃下一道菜时,他的状态会发生以下变化:

  • 初始时,Takahashi的胃是健康的。
  • 当他的胃是健康的时,
    • 如果他吃下一道解毒菜,他的胃保持健康
    • 如果他吃下一道有毒菜,他的胃会不舒服
  • 当他的胃是不舒服的时,
    • 如果他吃下一道解毒菜,他的胃会恢复健康
    • 如果他吃下一道有毒菜,他会死亡

进餐的过程如下。

  • 按照顺序重复以下步骤i=1,,Ni = 1, \ldots, N
    • 首先,上菜第ii道菜给Takahashi。
    • 然后,他选择“吃掉”或“跳过”这道菜。
      • 如果他选择“吃”,他会吃掉第ii道菜。他的状态也会根据他所吃的菜而改变。
      • 如果他选择“跳过”,他就不吃这道菜。这道菜不能以后上菜或以某种方式保存。
    • 最后,(如果他的状态发生了变化,在变化之后)如果他还没有死亡,
      • 如果iNi \neq N,他继续下一道菜。
      • 如果i=Ni = N,他成功离开餐馆。

一个重要的会议正在等待着他,所以他必须成功离开餐馆。 在这种情况下,找到他吃掉的菜的美味度之和的最大可能值(如果他什么都没吃,则为00)。

约束条件

  • 所有输入值均为整数。
  • 1N3×1051 \le N \le 3 \times 10^5
  • Xi{0,1}X_i \in \{0,1\}
    • 换句话说,XiX_i是0或1。
  • 109Yi109-10^9 \le Y_i \le 10^9

输入

输入以以下格式从标准输入中给出:

NN X1X_1 Y1Y_1 X2X_2 Y2Y_2 \vdots XNX_N YNY_N

输出

输出作为一个整数。


示例输入1

5
1 100
1 300
0 -200
1 500
1 300

示例输出1

600

下面的选择会使他吃掉的菜的美味度总和为600600,这是可能的最大值。

  • 跳过第1道菜。他的胃现在是健康的。
  • 吃掉第2道菜。他的胃现在不舒服了,他吃掉的菜的美味度总和为300300
  • 吃掉第3道菜。他的胃重新变得健康,他吃掉的菜的美味度总和为100100
  • 吃掉第4道菜。他的胃又不舒服了,他吃掉的菜的美味度总和为600600
  • 跳过第5道菜。他的胃还是不舒服。
  • 最后,他没有死亡,所以他成功离开了餐馆。

示例输入2

4
0 -1
1 -2
0 -3
1 -4

示例输出2

0

对于这个输入,最佳的选择是什么都不吃,这样答案就是00


示例输入3

15
1 900000000
0 600000000
1 -300000000
0 -700000000
1 200000000
1 300000000
0 -600000000
1 -900000000
1 600000000
1 -100000000
1 -400000000
0 900000000
0 200000000
1 -500000000
1 900000000

示例输出3

4100000000

答案可能无法适应32位整数类型。