GP28450. 逆序计划

提交7 通过3
通过率42.9%
文件IO启用
输入文件reverseplan.in
输出文件reverseplan.out
时间限制2000ms
内存限制256MiB
    ID: 14565 传统题 文件IO 输入文件:reverseplan.in 输出文件:reverseplan.out 2000ms 256MiB 尝试: 7 已通过: 3 难度: 普及 上传者: 标签>枚举一维前缀和

题目描述

题目描述

控制中心已经排好了一份包含 nn 条指令的计划。系统的储备值初始为 00,执行一条数值为 aia_i 的指令后,储备值增加 aia_i。aia_i 可以为正数、负数或零。

在开始执行前,你至多可以选择一个非空连续区间 [l,r][l,r],将这个区间内指令的执行顺序翻转。也就是说,

al,al+1,…,ara_l,a_{l+1},\ldots,a_r

会变为

ar,ar−1,…,al.a_r,a_{r-1},\ldots,a_l.

指令的数值不会改变,也不会变号;区间外指令的顺序不变。选择长度为 11 的区间不会改变计划,因此也表示不进行有效调整。

调整后,记执行完前 ii 条指令时的储备值为 HiH_i。一份计划的安全值定义为

min⁡(H1,H2,…,Hn).\min(H_1,H_2,\ldots,H_n).

初始值 H0=0H_0=0 不计入上述最小值。

请输出所有合法选择中,安全值的最大可能值。

输入格式

从文件 reverseplan.in 中读取数据。

第一行包含一个整数 nn。

第二行包含 nn 个整数 a1,a2,…,ana_1,a_2,\ldots,a_n。

本题只有一组测试数据,并保证:

  • 1≤n≤50001\le n\le 5000;
  • −109≤ai≤109-10^9\le a_i\le 10^9。

所有执行过程中的储备值以及答案都能用有符号 6464 位整数表示。

输出格式

输出到文件 reverseplan.out 中。

输出一个整数,表示最大的安全值。

答案由输入唯一确定。采用标准判题,按空白分隔比较这个整数。

样例输入 #1

5
-5 4 -2 6 -1

样例输出 #1

2

样例解释

选择区间 [1,4][1,4] 后,指令序列变为

6,−2,4,−5,−1.6,-2,4,-5,-1.

各次执行后的储备值依次为 6,4,8,3,26,4,8,3,2,安全值为 22。无论怎样翻转,最后的储备值 H5H_5 都等于所有指令之和 22,所以安全值不可能超过 22。因此答案为 22。

数据规模与约定

本题采用子任务捆绑计分。只有通过某个子任务内的所有测试点,才能获得该子任务的分数。各子任务独立计分。除下表列出的额外条件外,每个子任务均满足完整输入限制。

子任务 分值 额外条件
1 20 n≤40n\le 40
2 a1≤a2≤⋯≤ana_1\le a_2\le\cdots\le a_n
3 60 无额外条件

下发文件

包含本题额外3组大数据的输入与输出文件。

下载三组测试数据,非真实测试数据