A34572.划分区间
提高+/省选-
官方
通过率:0%
时间限制:4.00s
内存限制:256MB
题目描述
给你一个数组 A,你可以将数组不重不漏的划分为若干个连续的区间,每个区间产生的贡献为 v 的计算方式如下:
设当前区间为 [al,al+1,...,ar],区间的和为 s=al+al+1+……+ar−1+ar, 区间长度为 len=r−l+1, 产生的贡献 v 的计算方式如下:
- if s=0,v=0
- if s<0,v=−len
- if s>0,v=len
求数组划分完所有区间后能产生的最大贡献。
数据范围
- 1≤n≤5×105
- −109≤Ai≤109
输入格式
第一行输入一个整数 n,代表区间长度。
第二行输入 n 个整数,代表 A 数组的值。
输出格式
输出一个整数表示答案。
输入输出样例
输入#1
3 -1 1 2
输出#1
3
输入#2
3 -1 2 -1
输出#2
1
输入#3
3 -5 2 -1
输出#3
1
说明/提示
对于样例一而言,你可以把 A 数组划分为 [−1,1,2], 区间和为 s=2>0, 所以贡献为 3。
对于样例二而言,你可以把 A 数组划分为 [−1],[2,−1],这三个区间分别产生的贡献为 −1,2, 所以总贡献是 1。
对于样例三而言,你可以把 A 数组划分为 [−5],[2,−1],这两个区间分别产生的贡献为 −1,2,所以总贡献为 1。