#abc472b. Break a Stick

Break a Stick

题目描述

有一根木棒,上面有 N1N-1 道刻痕,这些刻痕把木棒分成了 NN 段。

从一端开始数,各段的长度依次是 L1,L2,,LNL_1, L_2, \ldots, L_N

现在要选择其中一道刻痕,在那里把木棒折断,得到两根木棒。请求出这两根木棒长度之差的绝对值的最小值

其中刻痕本身的宽度忽略不计,折出来的每根木棒的长度就是它所包含的各段长度之和。

输入格式

N
L_1 L_2 ... L_N

输出格式

输出答案。

输入示例 1

4
5 2 3 8

输出示例 1

2

示例 1 说明

在每一道刻痕处折断的结果如下:

  • 在从一端数第 11 道刻痕折断,两根木棒长度分别为 551313,差的绝对值是 88
  • 在第 22 道刻痕折断,长度分别为 771111,差的绝对值是 44
  • 在第 33 道刻痕折断,长度分别为 101088,差的绝对值是 22

三者取最小得到 22。注意刻痕只有 N1=3N-1 = 3 道,不能在木棒的两端「折断」

输入示例 2

7
31 41 59 26 53 58 97

输出示例 2

51

示例 2 说明

总长为 365365,是奇数,所以两段不可能相等,答案至少是 11;实际最优的一刀落在前 44 段与后 33 段之间,得到 157157208208,差为 5151。这说明最接近一半的分割点未必让差很小,必须每个刻痕都试一遍。

输入示例 3

10
67011 35764 33042 24098 63738 98760 17199 68579 21812 45408

输出示例 3

28105

示例 3 说明

本组数据的总长为 475411475411,接近 NNLiL_i 同时取较大值的情形,可用来检验前缀和是否会超出 3232 位整数范围(本题总长最大约 10710^7,尚未溢出,但养成用 long long 的习惯更稳妥)。

约束条件

  • 2N1002 \le N \le 100
  • 1Li1051 \le L_i \le 10^5
  • 所有输入值均为整数