CF1299C.Water Balance
提高+/省选-
通过率:0%
时间限制:3.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
There are n water tanks in a row, i-th of them contains ai liters of water. The tanks are numbered from 1 to n from left to right.
You can perform the following operation: choose some subsegment [l,r] (1≤l≤r≤n), and redistribute water in tanks l,l+1,…,r evenly. In other words, replace each of al,al+1,…,ar by r−l+1al+al+1+⋯+ar. For example, if for volumes [1,3,6,7] you choose l=2,r=3, new volumes of water will be [1,4.5,4.5,7]. You can perform this operation any number of times.
What is the lexicographically smallest sequence of volumes of water that you can achieve?
As a reminder:
A sequence a is lexicographically smaller than a sequence b of the same length if and only if the following holds: in the first (leftmost) position where a and b differ, the sequence a has a smaller element than the corresponding element in b.
一行中有 n 个水箱,其中第 i 个水箱含有 ai 升水。水箱从左到右编号为 1 到 n。
你可以执行如下操作:选择某个子区间 [l,r](满足 1≤l≤r≤n),并将水箱 l,l+1,…,r 中的水量均匀分配。换言之,将每个 al,al+1,…,ar 替换为 r−l+1al+al+1+⋯+ar。例如,对水量序列 [1,3,6,7],若选择 l=2,r=3,则新的水量序列为 [1,4.5,4.5,7]。该操作可执行任意多次。
你能得到的字典序最小的水量序列是什么?
提醒一下:
对于两个等长序列 a 和 b,当且仅当在 a 与 b 首次(最左侧)出现差异的位置上,a 中对应元素小于 b 中对应元素时,称序列 a 的字典序小于序列 b。
输入格式
The first line contains an integer n (1≤n≤106) — the number of water tanks.
The second line contains n integers a1,a2,…,an (1≤ai≤106) — initial volumes of water in the water tanks, in liters.
Because of large input, reading input as doubles is not recommended.
第一行包含一个整数 n(1≤n≤106)—— 水箱的数量。
第二行包含 n 个整数 a1,a2,…,an(1≤ai≤106)—— 各水箱的初始水量(单位:升)。
由于输入规模较大,不建议将输入读取为浮点数(double)。
输出格式
Print the lexicographically smallest sequence you can get. In the i-th line print the final volume of water in the i-th tank.
Your answer is considered correct if the absolute or relative error of each ai does not exceed 10−9.
Formally, let your answer be a1,a2,…,an, and the jury's answer be b1,b2,…,bn. Your answer is accepted if and only if max(1,∣bi∣)∣ai−bi∣≤10−9 for each i.
输出你能得到的字典序最小的序列。在第 i 行输出第 i 个水箱中的最终水量。
若每个 ai 的绝对误差或相对误差均不超过 10−9,则你的答案视为正确。
形式化地,设你的答案为 a1,a2,…,an,评测机的答案为 b1,b2,…,bn。当且仅当对每个 i 均满足 max(1,∣bi∣)∣ai−bi∣≤10−9 时,你的答案被接受。
输入输出样例
输入#1
4 7 5 5 7
输出#1
5.666666667 5.666666667 5.666666667 7.000000000
输入#2
5 7 8 8 10 12
输出#2
7.000000000 8.000000000 8.000000000 10.000000000 12.000000000
输入#3
10 3 9 5 5 1 7 5 3 8 7
输出#3
3.000000000 5.000000000 5.000000000 5.000000000 5.000000000 5.000000000 5.000000000 5.000000000 7.500000000 7.500000000
说明/提示
In the first sample, you can get the sequence by applying the operation for subsegment [1,3].
In the second sample, you can't get any lexicographically smaller sequence.
在第一个样例中,你可以通过对子段 [1,3] 应用该操作来得到该序列。
在第二个样例中,你无法得到任何字典序更小的序列。
输入解题思路,AI测评打分。不知道怎么写?