#abc306d. [abc306_d]Poisonous Full-Course

[abc306_d]Poisonous Full-Course

問題文

高橋くんはレストランで、 NN 品からなる奇妙なフルコースを楽しむことにしました。
このコースのうち ii 番目の料理は以下の通りです。

  • Xi=0X_i=0 の場合、美味しさが YiY_i解毒剤入り の料理
  • Xi=1X_i=1 の場合、美味しさが YiY_i毒入り の料理

高橋くんが料理を食べると、高橋くんの状態は以下のように変化します。

  • 最初、高橋くんはお腹を壊していない。
  • 高橋くんが お腹を壊していない 時、
    • 解毒剤入り の料理を食べても、高橋くんは お腹を壊していないまま である。
    • 毒入り の料理を食べると、高橋くんは お腹を壊す
  • 高橋くんが お腹を壊している 時、
    • 解毒剤入り の料理を食べると、高橋くんは お腹を壊していない状態になる
    • 毒入り の料理を食べると、高橋くんは 死ぬ

コースは以下の流れで進行します。

  • i=1,ldots,Ni = 1, \\ldots, N についてこの順に、以下の処理を繰り返す。
    • まず、 ii 番目の料理が高橋くんに提供される。
    • 次に、 高橋くんはこの料理に対し「食べる」か「下げてもらう」かを選択する。
      • 「食べる」を選択した場合、高橋くんは ii 番目の料理を食べる。食べた料理に応じて高橋くんの状態も変化する。
      • 「下げてもらう」を選択した場合、高橋くんは ii 番目の料理を食べない。この料理を後で提供してもらったり何らかの手段で保存したりすることはできない。
    • 最後に、 (状態が変化するなら変化後の時点で) 高橋くんが死んでいない場合、
      • ineqNi \\neq N なら次の料理に進む。
      • i=Ni = N なら高橋くんは生きて退店する。

高橋くんはこのあと重要な仕事があるため、高橋くんは生きて退店しなければなりません。
この条件の下で高橋くんが各料理に対し「食べる」「下げてもらう」を選択したとき、高橋くんが 食べた料理の美味しさの総和として考えられる最大値 ( 但し、何も食べなかった場合は 00 ) を出力してください。

制約

  • 入力は全て整数
  • 1leNle3times1051 \\le N \\le 3 \\times 10^5
  • Xiin0,1X_i \\in \\{0,1\\}
    • つまり、 XiX_i0,10,1 のどちらかである。
  • \-109leYile109\-10^9 \\le Y_i \\le 10^9

入力

入力は以下の形式で標準入力から与えられる。

NN X1X_1 Y1Y_1 X2X_2 Y2Y_2 vdots\\vdots XNX_N YNY_N

出力

答えを整数として出力せよ。


入力例 1

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

出力例 1

600

以下のように選択することで食べた料理の美味しさの総和を 600600 にでき、これが考えられる最大値です。

  • 11 番目の料理を下げてもらう。高橋くんはお腹を壊していません。
  • 22 番目の料理を食べる。高橋くんはお腹を壊し、食べた料理の美味しさの総和は 300300 となります。
  • 33 番目の料理を食べる。高橋くんはお腹を壊していない状態に戻り、食べた料理の美味しさの総和は 100100 となります。
  • 44 番目の料理を食べる。高橋くんはお腹を壊し、食べた料理の美味しさの総和は 600600 となります。
  • 55 番目の料理を下げてもらう。高橋くんはお腹を壊しています。
  • 最終的に高橋くんは死んでいないので、高橋くんは生きて退店する。

入力例 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

答えが 3232 bit 符号付き整数に収まらない可能性があります。