#9844. 士兵排列

    ID: 9844 传统题 1000ms 256MiB 尝试: 0 已通过: 0 难度: (无) 上传者: 标签>树状数组树状数组找第K排列还原逆序序列

士兵排列

题目描述

军士长 Johnny\text{Johnny} 手下一共有 nn 个士兵,每个士兵按照身高从矮到高编号为 11nn 。可惜这群士兵太笨了,第一次排好后现在又忘记怎么排了。站在 Johnny\text{Johnny} 面前的士兵虽然排成了一列,但是顺序就不一定是从 11nn 了。

Johnny\text{Johnny} 想了如下的一个办法让他们排列整齐: 从最前面的士兵开始,每个士兵一直往前排直到碰到一个编号比自己小的士兵(身高小于自己)为止,然后该士兵就站在这个位置。不一会儿,队伍调整好了。 Johnny\text{Johnny} 觉得很满意,不过为了提高效率,他要士兵们记住,这次调整的过程中,每个人各自往前走了几个人的位置。

现在给你这样一个任务:告诉你在排队过程中每个人往前走了几个人的位置,请你告诉我最初这个队伍的顺序是怎样的。

输入格式

输入第一行包含一个正整数 nn,代表士兵个数。

第二行一共 nn 个整数,第 ii 个数代表原来队伍中排在第 ii 个位置的人在调整过程中往前走了几个人的位置。

输出格式

输出包含一行,共 nn 个整数,从左往右第 ii 个数代表最初在队伍中第 ii 个人的编号。相邻两个整数用一个空格隔开。

5 
0 1 2 0 1 
3 2 1 5 4 

样例分析

如上所述。

数据范围与提示

对于 10%10\% 的数据:1n101 \le n \le 10

对于 30%30\% 的数据:1n10001 \le n \le 1000

对于 100%100\% 的数据:1n2×1051 \le n \le 2 \times 10^5