0802 ABC359_E Water Tank | OJ题库 | CODE STUDY
CODE STUDY
Programming Practice Platform

欢迎回来

0802

ABC359_E Water Tank

Easy 时间限制 1000 ms 内存限制 262144 KB
单调栈 单调队列

题目详情

返回题库

题目描述

有一个长长的水箱,上面等间隔地放着不同高度的木板。高桥想知道,从水箱的一端倒水时,水到达每一段的时间

给你一个长度为N的正整数序列:H=($H_1,H_2,.....H_N$)

有一个长度为N+1的非负整数序列:A=($A_0,A_1,A_2,.....A_N$).最初为$A_0$=$A_1$=⋯=$A_N$=0

对A重复进行以下运算:

  1. $A_0$的值增加1。
  2. 依次对i=1,2,…,N进行以下操作:
    • 如果$A_{i-1}$>$A_i$和$A_{i-1}$>$H_i$,则将$A_{i-1}$的值减少 1,并将$A_i$​的值增加1。

求每个i=1,2,…,N在$A_i$首次成立之前的运算次数。

输入描述

第一行一个整数N

第二行N个整数$H_1,H_2....H_N$

数据范围:

  • 1≤N≤2×$10^5$
  • 1≤$H_i$≤$10^9$(1≤i≤N)

输出描述

输出水到达1,2,3....N的时间,用空格隔开

提示

样例1解释:

前五次操作如下

这里,每一行对应一个操作,最左边的一列代表步骤 1,其他列代表步骤 2。

570466412318b9902952c408a421be0c.png

从图中可以看出,A1>0在第 4 次操作后第一次成立,而A2>0在第 5 次操作后第一次成立。

同样,A3,A4,A5的答案分别是13,14,26

因此,您应该打印4 5 13 14 26

测试样例

样例支持多行内容展示
样例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
editor.py

提交前会先自动运行样例。只有样例全部通过,才会进入后端正式判题。