#P8424. [JOI Open 2022] 跷跷板(Seesaw)

[JOI Open 2022] 跷跷板(Seesaw)

题目背景

译自 JOI Open 2022 T1. シーソー / Seesaw

题目描述

一根长度为 109{10}^9 的直杆从左到右水平放置。你可以忽略这根杆的重量。共有 NN 个砝码挂在这根杆上,每个砝码的质量为一单位。这 NN 个砝码的位置两两不同。第 ii1iN1 \le i \le N)个砝码的位置为 AiA_i。即,第 ii 个砝码到直杆最左端的距离为 AiA_i

最开始,我们有一个宽度为 ww 的箱子。我们可以把这根杆子放在箱子上,支撑起杆从 llrr0l<r1090 \le l < r \le {10}^9)的部分(包括两端),即,从杆上位置为 ll 到杆上位置为 rr 的区间。这里需要满足 r=l+wr = l + w。之后我们不可以改变 llrr 的值。

接下来,我们去掉挂在杆上最左端或最右端的砝码。我们需要重复这个操作 N1N - 1 次。在这个过程中,包括初始状态和最终状态,挂在杆上的所有砝码重心都需要保持在 llrr 之间(包括两端)。如果杆上挂有 mm 个砝码,位置分别为 b1,b2,,bmb_1, b_2, \ldots, b_m,那么重心位置为 b1+b2++bmm\frac{b_1 + b_2 + \cdots + b_m}{m}

给定 NN 和这 NN 个砝码的位置 A1,A2,,ANA_1, A_2, \ldots, A_N,写一个程序计算箱子的最小可能宽度 ww

输入格式

第一行,一个正整数 NN

第二行,NN 个非负整数 A1,A2,,ANA_1, A_2, \ldots, A_N

输出格式

输出箱子的最小可能宽度 ww。只要你的输出与标准答案之间的绝对误差或相对误差小于等于 109{10}^{-9},你的程序就会被判为正确。

3
1 2 4

0.8333333333

6
1 2 5 6 8 9

1.166666667

提示

【样例解释 #1】

可让箱子的宽度为 56\frac{5}{6}。我们令 l=32,r=73l = \frac{3}{2}, r = \frac{7}{3}。进行如下操作:

  • 最初,重心位置为 73\frac{7}{3}
  • 第一次操作,我们去掉最右端的砝码(位置为 44 的砝码)。重心位置变为 32\frac{3}{2}
  • 第二次操作,我们去掉最左端的砝码(位置为 11 的砝码)。重心位置变为 22

在这个过程中,重心始终保持在 llrr 范围中。

因为箱子的宽度不会小于 56\frac{5}{6},因此输出 56\frac{5}{6} 的小数形式。

这组样例满足所有子任务的限制。


【样例解释 #2】

这组样例满足所有子任务的限制。


【数据范围】

本题采用捆绑测试。

  • 子任务 1(1 分):N20N \le 20
  • 子任务 2(33 分):N100N \le 100
  • 子任务 3(33 分):N2000N \le 2000
  • 子任务 4(33 分):无特殊限制。

对于所有数据,满足 2N2×1052 \le N \le 2 \times 10^50A1<A2<<AN1090 \le A_1 < A_2 < \cdots < A_N \le {10}^9