已结束 GESP巅峰赛#15
← 上一题 下一题 →

A4643 | 划分区间

时间限制4s
内存限制256MB
通过 / 提交0/0

题目描述

给你一个数组 $A$,你可以将数组不重不漏的划分为若干个连续的区间,每个区间产生的贡献为 $v$ 的计算方式如下:

设当前区间为 $[a_l, a_{l + 1}, ..., a_r]$,区间的和为 $s = a_l + a_{l +1}+…… + a_{r - 1} + a_r$, 区间长度为 $len = r - l + 1$, 产生的贡献 $v$ 的计算方式如下:

- if $s = 0, v = 0$
- if $s < 0, v = -len$
- if $s > 0, v = len$

求数组划分完所有区间后能产生的最大贡献。

$数据范围$
- $1 \leq n \leq 5\times10^5$
- $-10^9 \leq A_i \leq 10^9$

输入格式

第一行输入一个整数 $n$,代表区间长度。
第二行输入 $n$ 个整数,代表 $A$ 数组的值。

输出格式

输出一个整数表示答案。

输入输出样例

输入 #1
3
-1 1 2
输出 #1
3
输入 #2
3
-1 2 -1
输出 #2
1
输入 #3
3
-5 2 -1
输出 #3
1
C++ 编辑器
输入
输出