A34572.划分区间

提高+/省选-

官方

通过率:0%

时间限制:4.00s

内存限制:256MB

题目描述

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

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

  • if s=0,v=0s = 0, v = 0
  • if s<0,v=lens < 0, v = -len
  • if s>0,v=lens > 0, v = len

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

数据范围数据范围

  • 1n5×1051 \leq n \leq 5\times10^5
  • 109Ai109-10^9 \leq A_i \leq 10^9

输入格式

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

输出格式

输出一个整数表示答案。

输入输出样例

  • 输入#1

    3
    -1 1 2

    输出#1

    3
  • 输入#2

    3
    -1 2 -1

    输出#2

    1
    
  • 输入#3

    3
    -5 2 -1

    输出#3

    1

说明/提示

对于样例一而言,你可以把 AA 数组划分为 [1,1,2][-1, 1, 2], 区间和为 s=2>0s = 2 > 0, 所以贡献为 33

对于样例二而言,你可以把 AA 数组划分为 [1],[21][-1], [2,-1],这三个区间分别产生的贡献为 1,2-1, 2, 所以总贡献是 11

对于样例三而言,你可以把 AA 数组划分为 [5],[2,1][-5], [2, -1],这两个区间分别产生的贡献为 1,2-1, 2,所以总贡献为 11

首页