AT_past17_n ソフトウェアアップデート

题目描述

高桥打算更新 $N$ 个应用,编号分别为 app $1$,app $2$,$\ldots$,app $N$。 更新第 $i$ 个应用($1\leq i\leq N$)需要 $T_i$ 单位时间。 高桥可以自选应用的更新顺序。 从时间 $0$ 开始,他的电脑会按照指定顺序逐个更新应用。 具体来说,若他选择第 $i$ 个被更新的应用为 app $p_i$,则电脑会按如下方式工作: - 第 $k$ 个被更新的应用 app $p_k$,会从时间 $(T_{p_1}+T_{p_2}+\cdots+T_{p_{k-1}})$ 开始更新,到 $(T_{p_1}+T_{p_2}+\cdots+T_{p_{k-1}}+T_{p_k})$ 结束。 他想要选择合适的顺序,使得在更新过程中查看进度时,能尽可能准确地估算全部更新所需的总时长。 然而,在更新过程中,他只能获得一个整数 $k$,表示当前正在进行第 $k$ 次更新。 若他发现自己在时间 $t$ 正处于第 $k$ 次更新,则他对于总更新时长的估算为 $f(t)=\frac{N}{k-0.5}\cdot t$。 其中,在第 $i$ 次更新刚开始时,他认为正在进行第 $i$ 次更新。具体地,在时间 $0$ 时,他认为正在进行第 $1$ 次更新;每当第 $i$ 次更新结束并且第 $(i+1)$ 次更新开始时,他认为正在进行第 $(i+1)$ 次更新。 记全部更新的总时长为 $S=\sum_{i=1}^N T_i$。 假设他在 $t$ 时刻进行估算,其中 $t$ 从 $0$(包含)到 $S$(不包含)之间均匀随机选择,求在最优顺序下,他估算误差 $\lvert f(t)-S\rvert$ 的期望值的最小值。

输入格式

输入按以下格式从标准输入读入: > $N$ $T_1$ $T_2$ $\ldots$ $T_N$

输出格式

请输出最小期望值 $\lvert f(t)-S\rvert$。 当你的答案与正确答案的绝对误差或相对误差不超过 $10^{-6}$ 时,将被判定为正确。

说明/提示

### 样例解释 1 全部更新所需总时长为 $S=3+7=10$。 若指定更新顺序为 $1\to 2$,在 $0\leq t