[R77D]归并 - 代码源竞赛平台
时空限制
1.5S/512M
题目描述
一条从左到右排列的流水线上有 n 个物料盒,原编号依次为 1,2,…,n。第 i 个盒子最初装有 ai 单位物料。移走盒子后,其他盒子仍保留原编号。
管理员反复执行以下操作,直到所有盒子都被移走:
- 选出当前物料量最少的盒子;如果有多个,选择原编号最小的一个。设它的原编号为 i,当前物料量为 v。
- 如果它的右侧还有未移走的盒子,将这 v 单位物料倒入右侧最近的未移走盒子。这里“右侧最近”指原编号大于 i 的未移走盒子中,原编号最小者。如果不存在这样的盒子,则直接取走这些物料,不向任何盒子增加物料。
- 移走原编号为 i 的盒子,并记录 i。
下一轮根据更新后的物料量重新选择盒子。请输出记录下来的原编号序列。
格式
输入格式
第一行包含一个正整数 n,为盒子的数量。
第二行包含 n 个非负整数 a1,a2,…,an,其中 ai 为原编号为 i 的盒子最初装有的物料量。
输出格式
输出一行,包含 n 个正整数,依次表示每轮移走的盒子的原编号,相邻两个整数之间用一个空格分隔。
样例
样例输入 #1
4
4 1 3 2
样例输出 #1
2 4 1 3
样例解释 #1
先移走盒子 2,将盒子 3 的物料量变为 4;接着移走最右侧的盒子 4,不向任何位置增加物料。剩下盒子 1、3 的物料量都为 4,先移走盒子 1,最后移走盒子 3。
样例输入 #2
4
1 2 1 2
样例输出 #2
1 3 2 4
样例解释 #2
前两轮分别移走盒子 1、3,之后盒子 2、4 的物料量都为 3。移走盒子 2 时,它右侧最近的未移走盒子是盒子 4,因此盒子 4 的物料量变为 6。
数据规模
注意:你只有通过了子任务的所有测试点,才能获得对应子任务的分数。
| 子任务编号 |
分数 |
n≤ |
特殊性质 |
| 1 |
25 |
2000 |
无 |
| 2 |
25 |
2×105 |
A |
| 3 |
50 |
无特殊限制 |
特殊性质 A:对于所有 1≤i≤n,均有 ai∈{0,1}。
对于 100% 的数据,满足 1≤n≤2×105,0≤ai≤109,输入中的所有数均为整数。