#ATabc359e. [ABC359E] Water Tank

[ABC359E] Water Tank

AT_abc359_e [ABC359E] Water Tank

题目描述

给定一个长度为 N N 的正整数序列 H=(H1,H2,,HN) H=(H_1,H_2,\dotsc,H_N)

存在一个长度为 N+1 N+1 的非负整数序列 A=(A0,A1,,AN) A=(A_0,A_1,\dotsc,A_N) 。初始时,A0=A1==AN=0 A_0=A_1=\dotsb=A_N=0

A A 重复执行以下操作:

  1. A0 A_0 的值增加 1 1
  2. 按顺序对 i=1,2,,N i=1,2,\ldots,N 执行以下操作:
    • 如果 Ai1>Ai A_{i-1}>A_i Ai1>Hi A_{i-1}>H_i ,则将 Ai1 A_{i-1} 的值减少 1 1 ,并将 Ai A_i 的值增加 1 1

对于每个 i=1,2,,N i=1,2,\ldots,N ,求首次满足 Ai>0 A_i>0 时的操作次数。

输入格式

输入通过标准输入给出,格式如下:

N N
H1 H_1 H2 H_2 \dotsc HN H_N

输出格式

在一行中输出 i=1,2,,N i=1,2,\ldots,N 对应的答案,以空格分隔。

样例 1

输入

5
3 1 4 1 5

输出

4 5 13 14 26

样例 2

输入

6
1000000000 1000000000 1000000000 1000000000 1000000000 1000000000

输出

1000000001 2000000001 3000000001 4000000001 5000000001 6000000001

样例 3

输入

15
748 169 586 329 972 529 432 519 408 587 138 249 656 114 632

输出

749 918 1921 2250 4861 5390 5822 6428 6836 7796 7934 8294 10109 10223 11373

说明/提示

背景故事

有一个长长的水箱,内部等间距地放置了高度不同的隔板。高桥君想知道,当他从水箱的一端持续注水时,水首次到达每个隔板分隔的区域的具体时刻。

约束条件

  • 1N2×105 1\leq N\leq2\times10^5
  • 1Hi109 (1iN) 1\leq H_i\leq10^9\ (1\leq i\leq N)
  • 输入均为整数

样例解释 #1

初始的 5 5 次操作如下所示。每一行对应一次操作,最左侧为第 1 1 步操作,其余为第 2 2 步操作。
图示
从图中可以看出,A1>0 A_1>0 首次成立是在第 4 4 次操作后,A2>0 A_2>0 首次成立是在第 5 5 次操作后。类似地,A3,A4,A5 A_3,A_4,A_5 对应的答案分别为 13,14,26 13,14,26 。因此,输出 4 5 13 14 26

样例解释 #2

请注意,输出的值可能超出 32bit 32\operatorname{bit} 整数的范围。

翻译由 DeepSeek V3 完成