#abc472b. Break a Stick

Break a Stick

题目描述

有一根木棒,上面有 N−1N-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 道刻痕折断,两根木棒长度分别为 55 和 1313,差的绝对值是 88;
  • 在第 22 道刻痕折断,长度分别为 77 和 1111,差的绝对值是 44;
  • 在第 33 道刻痕折断,长度分别为 1010 和 88,差的绝对值是 22。

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

输入示例 2

7
31 41 59 26 53 58 97

输出示例 2

51

示例 2 说明

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

输入示例 3

10
67011 35764 33042 24098 63738 98760 17199 68579 21812 45408

输出示例 3

28105

示例 3 说明

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

约束条件

  • 2≤N≤1002 \le N \le 100
  • 1≤Li≤1051 \le L_i \le 10^5
  • 所有输入值均为整数