#462. [R74F]编号筛选装置

[R74F]编号筛选装置

时空限制

3S/512M

题目描述

研究员正在调试一台栈式筛选装置。装置会依次读取一列互不相同的编号,并按照给定阈值决定将编号压入暂存栈或弹出栈顶。为了比较不同阈值下装置最终保留的编号,需要完成下面的计算。

给定一个长度为 nn 的排列^{\dagger} p1,p2,,pnp_1,p_2,\ldots,p_n

对于每个整数阈值 t=1,2,,nt=1,2,\ldots,n,独立执行以下过程:

开始时栈为空。依次处理 p1,p2,,pnp_1,p_2,\ldots,p_n

  • 如果 pitp_i\le t,把数值 pip_i 放到栈顶。
  • 如果 pi>tp_i>t,则删除当前栈顶的数;若栈为空,什么也不做。

栈只允许从顶部放入或删除数,后放入的数先被删除。处理完整个排列后,求栈中剩余数值之和。空栈的和为 00

请输出每个阈值对应的结果。不同阈值的过程都从空栈重新开始,互不影响。

^{\dagger} :一个长度为 nn 的排列是一个包含 1,2,,n1,2,\dots,n 且每个数恰好出现一次的序列。

格式

输入格式

第一行包含一个整数 nn,表示排列的长度。

第二行包含 nn 个整数 p1,p2,,pnp_1,p_2,\ldots,p_n,表示要求的排列。

输出格式

输出 nn 行,第 tt 行表示阈值为 tt 时,最终栈中剩余数值之和。

样例

样例输入 #1

5
3 1 5 2 4

样例输出 #1

0
0
3
9
15

样例解释 #1

阈值为 33 时,依次入栈 3,13,1,处理 55 时删除 11,随后入栈 22,处理 44 时删除 22,最终仅剩 33

阈值为 44 时,最后从栈底到栈顶依次为 3,2,43,2,4,和为 99

样例输入 #2

4
4 3 2 1

样例输出 #2

1
3
6
10

数据规模

注意:你只有通过了子任务的所有测试点,才能获得对应子任务的分数。

子任务编号 分数 nn\le 特殊性质
11 3030 20002000
22 2020 2×1052 \times 10^5 特殊性质 A
33 5050

特殊性质 A:pi=ip_i = i

对于 100%100\% 的数据,满足 1n2×1051 \le n \le 2 \times 10^5pp1,2,,n1,2,\ldots,n 的排列。