CF1299C Water Balance
题目描述
有 $n$ 个水箱排成一排,第 $i$ 个水箱中有 $a_i$ 升水。水箱从左到右编号为 $1$ 到 $n$。
你可以进行如下操作:选择一个子区间 $[l, r]$($1 \le l \le r \le n$),并将区间 $l, l+1, \dots, r$ 内的水平均分配。也就是说,将 $a_l, a_{l+1}, \dots, a_r$ 全部替换为 $\frac{a_l + a_{l+1} + \dots + a_r}{r-l+1}$。例如,若水量为 $[1, 3, 6, 7]$,你选择 $l = 2, r = 3$,则新的水量为 $[1, 4.5, 4.5, 7]$。你可以进行任意多次这样的操作。
你能得到的字典序最小的水量序列是什么?
提示:
如果在第一个(最左边)不同的位置,序列 $a$ 的元素小于序列 $b$ 的对应元素,则称序列 $a$ 的字典序小于序列 $b$。
输入格式
第一行包含一个整数 $n$($1 \le n \le 10^6$),表示水箱的数量。
第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$($1 \le a_i \le 10^6$),表示每个水箱初始的水量(单位:升)。
由于输入数据较大,不建议将输入读入为 double 类型。
输出格式
输出你能得到的字典序最小的水量序列。第 $i$ 行输出第 $i$ 个水箱最终的水量。
如果你的每个 $a_i$ 的绝对或相对误差不超过 $10^{-9}$,你的答案将被判为正确。
形式化地说,设你的答案为 $a_1, a_2, \dots, a_n$,标准答案为 $b_1, b_2, \dots, b_n$。当且仅当对于每个 $i$,有 $\frac{|a_i - b_i|}{\max{(1, |b_i|)}} \le 10^{-9}$ 时,你的答案才会被接受。
说明/提示
在第一个样例中,你可以通过对子区间 $[1, 3]$ 进行操作得到答案。
在第二个样例中,无法得到更小的字典序序列。
由 ChatGPT 4.1 翻译