CF846C.Four Segments

传统题 文件IO:fs 时间 1000 ms 内存 256 MiB 7 尝试 24 已通过 7 标签

Four Segments

题目描述

给定一个由 nn 个整数组成的数组。记 sum(l,r)sum(l, r) 为数组中从位置 ll 到位置 rr 之间所有数的和(包含第 ll 个元素,不包含第 rr 个元素)。下标 ll 和 rr 满足 0≤l≤r≤n0 \le l \le r \le n。数组下标从 00 开始编号。

例如,若 a=[−5,3,9,4]a = [-5, 3, 9, 4],则 sum(0,1)=−5sum(0, 1) = -5,sum(0,2)=−2sum(0, 2) = -2,sum(1,4)=16sum(1, 4) = 16,且对于 00 到 44 的每个 ii,都有 sum(i,i)=0sum(i, i) = 0。

请选择三个分隔符的下标 delim0,delim1,delim2delim_0, delim_1, delim_2(0≤delim0≤delim1≤delim2≤n0 \le delim_0 \le delim_1 \le delim_2 \le n),将数组划分成四段,使得下式的值最大:

$$res = sum(0, delim_0) - sum(delim_0, delim_1) + sum(delim_1, delim_2) - sum(delim_2, n)$$

注意,某些 sum(l,r)sum(l, r) 可能对应空区间(当某个区间的 l=rl = r 时)。

输入

第一行包含一个整数 nn(1≤n≤50001 \le n \le 5000)。

第二行包含 nn 个整数 a0,a1,…,an−1a_0, a_1, \dots, a_{n-1}(−109≤ai≤109-10^9 \le a_i \le 10^9)。

输出

输出三个下标,使得 resres 的值最大。如果存在多个答案,输出任意一个即可。

样例

样例 1

输入:

3
-1 2 3

输出:

0 1 3

样例 2

输入:

4
0 0 -1 0

输出:

0 0 0

样例 3

输入:

1
10000

输出:

1 1 1

在线编程 IDE

建议全屏模式获得最佳体验