atcoder#ARC066C. [ARC066E] Addition and Subtraction Hard

[ARC066E] Addition and Subtraction Hard

配点 : 900900

問題文

joisinoお姉ちゃんは、NN 項から成る式、A1A_1 op1op_1 A2A_2 ...... opN1op_{N-1} ANA_N を持っています。 ここで、AiA_i は整数で、opiop_i は、+ または - の記号です。 joisinoお姉ちゃんは大きい数が好きなので、括弧を好きな数だけ( 00 個でもよい)挿入することで、計算の順番を変え、式の値を最大化したいです。 開き括弧は数の直前、閉じ括弧は数の直後にのみ、挿入することが許されます。 同じ場所に挿入する括弧の個数に制限はありません。 あなたの仕事は、式に括弧をいくつか挿入した際に、式の値としてありうるものの最大値を求めるプログラムを作ることです。

制約

  • 1N1051 \leq N \leq 10^5
  • 1Ai1091 \leq A_i \leq 10^9
  • opiop_i は、+ または - の記号である。

入力

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

NN

A1A_1 op1op_1 A2A_2 ...... opN1op_{N-1} ANA_N

出力

括弧をいくつか挿入してできる式の値としてありうるものの最大値を出力せよ。

3
5 - 1 - 3
7

5(13)=75 - (1 - 3) = 7 となり、これが最大なので、77 を出力します。

5
1 - 2 + 3 - 4 + 5
5

1(2+34)+5=51 - (2 + 3 - 4) + 5 = 5 となり、これが最大なので、55 を出力します。

5
1 - 20 - 13 + 14 - 5
13

1(20(13+14)5)=131 - (20 - (13 + 14) - 5) = 13 となり、これが最大なので、1313 を出力します。