#YACS202106C5. 平衡点

平衡点

题目描述

给定一个由 nn 个整数组成的数列 a1,a2,,ana_1,a_2,\cdots,a_n,请为这个数列找到一个平衡点,使得平衡点左侧与右侧的力矩尽量接近。

若平衡点为 aka_k,则左侧力矩定义为数列中下标小于 kk 的各个元素到 aka_k 的距离乘以这些元素大小的总和。同理,右侧力矩定义为数列中下标大于 kk 的每个元素到 aka_k 的距离乘以这些元素大小的总和。

例如 n=6n=6,若选 a4a_4 为平衡,左力矩计算公式为:

L=a1×(41)+a2×(42)+a3×(43)L=a_1\times(4-1)+a_2\times(4-2)+a_3\times(4-3)

右力矩计算公式为:

R=a5×(54)+a6×(64)R=a_5\times(5-4)+a_6\times(6-4)

请找到一个最佳平衡点,并输出选择该点为平衡点时,左右力矩之差绝对值的最小值。

输入格式

第一行:单个整数表示 nn; 第二行:nn 个整数表示 a1,a2,,ana_1,a_2,\cdots,a_n

输出格式

单个整数:表示在选择了最佳平衡点的前提下,两侧力矩之差绝对值的最小值。

数据范围

  • 0ai1,000,0000\leq a_i\leq 1,000,000
  • 对于 30%30\% 的数据,3n10,0003 \leq n \leq 10,000
  • 对于 60%60\% 的数据,3n50,0003 \leq n \leq 50,000
  • 对于 100%100\% 的数据,3n300,0003 \leq n \leq 300,000

样例数据

输入:

4
1 2 3 4

输出:

0

说明:

3号位为平衡点