CF1299C.Water Balance

提高+/省选-

通过率:0%

时间限制:3.00s

内存限制:256MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

There are nn water tanks in a row, ii-th of them contains aia_i liters of water. The tanks are numbered from 11 to nn from left to right.

You can perform the following operation: choose some subsegment [l,r][l, r] (1≤l≤r≤n1\le l \le r \le n), and redistribute water in tanks l,l+1,…,rl, l+1, \dots, r evenly. In other words, replace each of al,al+1,…,ara_l, a_{l+1}, \dots, a_r by al+al+1+⋯+arr−l+1\frac{a_l + a_{l+1} + \dots + a_r}{r-l+1}. For example, if for volumes [1,3,6,7][1, 3, 6, 7] you choose l=2,r=3l = 2, r = 3, new volumes of water will be [1,4.5,4.5,7][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 aa is lexicographically smaller than a sequence bb of the same length if and only if the following holds: in the first (leftmost) position where aa and bb differ, the sequence aa has a smaller element than the corresponding element in bb.

一行中有 nn 个水箱,其中第 ii 个水箱含有 aia_i 升水。水箱从左到右编号为 11 到 nn。

你可以执行如下操作:选择某个子区间 [l,r][l, r](满足 1≤l≤r≤n1 \le l \le r \le n),并将水箱 l,l+1,…,rl, l+1, \dots, r 中的水量均匀分配。换言之,将每个 al,al+1,…,ara_l, a_{l+1}, \dots, a_r 替换为 al+al+1+⋯+arr−l+1\frac{a_l + a_{l+1} + \dots + a_r}{r-l+1}。例如,对水量序列 [1,3,6,7][1, 3, 6, 7],若选择 l=2,r=3l = 2, r = 3,则新的水量序列为 [1,4.5,4.5,7][1, 4.5, 4.5, 7]。该操作可执行任意多次。

你能得到的字典序最小的水量序列是什么?

提醒一下:

对于两个等长序列 aa 和 bb,当且仅当在 aa 与 bb 首次(最左侧)出现差异的位置上,aa 中对应元素小于 bb 中对应元素时,称序列 aa 的字典序小于序列 bb。

输入格式

The first line contains an integer nn (1≤n≤1061 \le n \le 10^6) — the number of water tanks.

The second line contains nn integers a1,a2,…,ana_1, a_2, \dots, a_n (1≤ai≤1061 \le a_i \le 10^6) — initial volumes of water in the water tanks, in liters.

Because of large input, reading input as doubles is not recommended.

第一行包含一个整数 nn(1≤n≤1061 \le n \le 10^6)—— 水箱的数量。

第二行包含 nn 个整数 a1,a2,…,ana_1, a_2, \dots, a_n(1≤ai≤1061 \le a_i \le 10^6)—— 各水箱的初始水量(单位:升)。

由于输入规模较大,不建议将输入读取为浮点数(double)。

输出格式

Print the lexicographically smallest sequence you can get. In the ii-th line print the final volume of water in the ii-th tank.

Your answer is considered correct if the absolute or relative error of each aia_i does not exceed 10−910^{-9}.

Formally, let your answer be a1,a2,…,ana_1, a_2, \dots, a_n, and the jury's answer be b1,b2,…,bnb_1, b_2, \dots, b_n. Your answer is accepted if and only if ∣ai−bi∣max⁡(1,∣bi∣)≤10−9\frac{|a_i - b_i|}{\max{(1, |b_i|)}} \le 10^{-9} for each ii.

输出你能得到的字典序最小的序列。在第 ii 行输出第 ii 个水箱中的最终水量。

若每个 aia_i 的绝对误差或相对误差均不超过 10−910^{-9},则你的答案视为正确。

形式化地,设你的答案为 a1,a2,…,ana_1, a_2, \dots, a_n,评测机的答案为 b1,b2,…,bnb_1, b_2, \dots, b_n。当且仅当对每个 ii 均满足 ∣ai−bi∣max⁡(1,∣bi∣)≤10−9\frac{|a_i - b_i|}{\max{(1, |b_i|)}} \le 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][1, 3].

In the second sample, you can't get any lexicographically smaller sequence.

在第一个样例中,你可以通过对子段 [1,3][1, 3] 应用该操作来得到该序列。

在第二个样例中,你无法得到任何字典序更小的序列。

输入解题思路,AI测评打分。不知道怎么写?

首页