题目描述
题目描述
有 个能量模块从左到右排成一行,第 个模块的能量变化量为整数 。
你需要选择一个非负整数 作为初始能量。之后重复以下操作,直到所有模块都被激活:
- 选择当前剩余模块中最左边或最右边的一个并激活;
- 将该模块的能量变化量加到当前能量上,然后检查当前能量是否非负;
- 被激活的模块从这一行中消失。
如果每次激活后的能量都不小于 ,包括激活最后一个模块之后,那么这次激活顺序是安全的。
请计算最小的初始能量 ,使得至少存在一种安全的激活顺序。
输入格式
从文件 energy.in 中读取数据。
第一行包含一个整数 ,表示模块数量。
第二行包含 个整数 ,表示各模块的能量变化量。
输出格式
输出到文件 energy.out 中。
输出一个非负整数,表示最小的初始能量 。
3
3 -5 2
0
3
-4 10 -3
3
样例解释
样例 #1 中,取 ,依次激活原下标为 的模块。每次激活后的能量依次为 ,因此这一顺序是安全的。由于初始能量不能为负数,答案不可能小于 。
样例 #2 中,取 ,依次激活原下标为 的模块。每次激活后的能量依次为 。若取 ,第一次只能激活能量变化量为 或 的模块,激活后的能量都会小于 ,因此答案为 。注意所有模块的能量变化量之和为正数,但初始能量仍不能取 。
数据规模与约定
对于所有数据,保证:
- ;
- ;
- 可以为正数、零或负数。
由于能量值和答案可能超过 位有符号整数的范围,建议使用 位整数。
本题采用子任务捆绑计分。只有通过某个子任务内的所有测试点,才能获得该子任务的分数;各子任务独立计分。
| 子任务对应的测试点编号 | 分值 | 额外约束 |
|---|---|---|
| 对所有 | ||
| 无特殊限制 |