#PD019A. 粒子合并 (unite)

粒子合并 (unite)

粒子合并 (unite)

  • 输入:unite.in
  • 输出:unite.out
  • 时间限制:1 s
  • 内存限制:128 MB

题目描述

一条直线上有 nn 个粒子,从左到右编号为 11 到 nn。第 ii 个粒子的电荷为 cic_i,电荷可以为负数、零或正数。

你有一台粒子合并装置。每次操作可以选择一个还存在的粒子并将它移除。移除后,剩下的粒子会向中间靠拢:

  • 如果被移除粒子的左右两侧都存在粒子,且它们的电荷分别为 xx 和 yy,那么这两个相邻粒子会合并成一个电荷为 x+yx+y 的新粒子。
  • 如果被移除粒子只有一侧存在粒子,则不会发生合并。

例如,电荷序列为 [−3,1,4,−1,5,−9][-3,1,4,-1,5,-9]。若移除第 44 个粒子,左右两侧电荷为 44 和 55 的粒子会合并,序列变为 [−3,1,9,−9][-3,1,9,-9]。

若再移除当前序列中的第 11 个粒子,序列变为 [1,9,−9][1,9,-9]。

你需要不断操作,直到只剩下一个粒子。请问最终剩余粒子的最大可能电荷是多少。

输入格式

从文件 unite.in 中读入数据。

第一行包含一个整数 nn。

第二行包含 nn 个整数 c1,c2,…,cnc_1,c_2,\dots,c_n,表示每个粒子的初始电荷。

输出格式

输出到文件 unite.out 中。

输出一个整数,表示最终剩余粒子的最大可能电荷。

注意,答案可能超过 3232 位整数范围。

样例1输入

6
-3 1 4 -1 5 -9

样例1输出

9

样例1解释

一种最优操作方式为:

  • 先移除电荷为 −1-1 的粒子,序列变为 [−3,1,9,−9][-3,1,9,-9]。
  • 再移除最左侧电荷为 −3-3 的粒子,序列变为 [1,9,−9][1,9,-9]。
  • 接着移除电荷为 −9-9 的粒子,序列变为 [1,9][1,9]。
  • 最后移除电荷为 11 的粒子,剩余粒子的电荷为 99。

可以证明最终剩余粒子的电荷不可能超过 99。

数据范围

对于所有数据,1<=n<=2000001 <= n <= 200000,−109<=ci<=109-10^9 <= c_i <= 10^9。每个测试点 1010 分。