#aBC359E. [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

输入 #1

5
3 1 4 1 5

输出 #1

4 5 13 14 26

输入输出样例 #2

输入 #2

6
1000000000 1000000000 1000000000 1000000000 1000000000 1000000000

输出 #2

1000000001 2000000001 3000000001 4000000001 5000000001 6000000001

输入输出样例 #3

输入 #3

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

输出 #3

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 完成