要把数组切成四段连续非空子段,最小化四段和的极差。vi≥‘1‘,前缀和严格递增。
车间里有一根已经按节编号的管材,共 m 节,从左到右第 i 节的价值是 vi。现在要在节与节之间切三刀,分成四段非空连续管,交给四个工班。一段的价值等于它包含的各节价值之和。
工班希望尽量均分:四段价值里的最大值减最小值要尽可能小。请算出这个最小差值。
约束:
4 ≤ m ≤ 1000001 ≤ vi ≤ 1000000000第一行一个整数 m(4 ≤ m ≤ 100000),表示节数。
第二行 m 个整数 v1,v2,…,vm(1 ≤ vi ≤ 1000000000),表示各节价值。
输出一个整数,即四段价值最大值与最小值之差的最小可能值。
输入
5
4 5 1 2 8
输出
5
说明
切成 [4]、[5]、[1,2]、[8],四段价值为 4、5、3、8,最大减最小为 5。这是最小可能差值。
输入
4
1 1 1 1
输出
0
说明
只有一种切法,四段都是 1,差值为 0。
输入
5
9 1 1 1 1
输出
8
说明
左边一节特别大。一种切法是 [9]、[1]、[1]、[1,1],价值 9、1、1、2,差值为 8。其它切法不会更小。
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.