T304972 「TERRA-OI R1」还没完呢,小子
题目背景
你将巨剑插入了噬神者的头部,拔出剑的同时,伴随着一声哀嚎,噬神者撕开了一道空间裂缝,钻入其中。正当你准备松口气时,望着周围仍然阴沉的空间,顿感不妙。忽然就在你身旁,一道更大的空间裂缝撕开,变得更为粗壮,更加骇人的噬神者从中冲出,天空中回荡着那声尖利刺耳的战吼......
题目描述
你有一个数列 $Y$,数列中有 $n$ 个数。
你还有一个数列 $X$,$X$ 是 $n$ 的一个排列。(即数列 $X$ 中每个数都在 $[1,n]$ 内且互不相同)
数列 $Y$ 是由数列 $X$ 得出的,转换方式是依次令 $i=1,2\cdots n$,并进行如下操作:
- 对于数列 $Y$ 的第 $i$ 个元素,如果在数列 $X$ 中第 $j$ 个元素比数列 $X$ 的第 $i$ 个元素大并且 $j$ 未在 $Y$ 中出现过,那么数列 $Y$ 的第 $i$ 个元素则为这个 $j$。
- 如果有多个满足这个条件的数,则那么数列 $Y$ 的第 $i$ 个元素则为最小的满足上述条件且未在数列 $Y$ 中出现的 $j$。
- 如果数列 $X$ 中没有满足的元素,则数列 $Y$ 的第 $i$ 个元素为 $-1$。
现在李子丢失了数列 $X$,但他还有数列 $Y$,请你找出一个数列 $X$,满足转换后是数列 $Y$(保证数列 $Y$ 的非 $-1$ 元素不同)。
输入格式
第一行一个正整数 $n$,表示数列长度。
第二行 $n$ 个用空格分隔的整数,表示数列 $Y$。
输出格式
一行 $n$ 个整数,表示数列 $X$。之间用空格分隔。
如果有多个答案,输出任意一个即可。
说明/提示
#### 【样例解释 #1】
数列 $X$ 中 $8$ 是最大的,在 $Y$ 中就为 $-1$。
第一个比 $7$ 大的是 $8$,也就是第一个,所以这一位是 $1$。
之后以此类推,所以数列 $Y$ 是 $[-1,1,2,3,4,5,6,7]$。
注意,数列 $Y$ 是输入给出的,你需要输出的是数列 $X$。
#### 【数据范围】
**本题采用捆绑测试。**
| Subtask | Score | $n\le$ |
| :----------: | :----------: | :----------: |
| $1$ | $10$ | $10$ |
| $2$ | $30$ | $10^3$ |
| $3$ | $20$ | $10^5$ |
| $4$ | $40$ | $5\times10^5$ |
对于 $100\%$ 的数据,$1\le n\le5\times10^5$,数列 $Y$ 中每个都在 $[1,n]$ 范围内或者等于 $-1$。
保证数据一定有解。
#### 【提示】
Checker 会检查你的答案正确与否,不过考虑到 Checker 中存在可能透露的解法的内容,所以暂时不提供 Checker 下载。
你的答案是正确的当且仅当:
1. 输出是 $n$ 的一个排列,并且用空格分隔;
2. 符合转换后为给定数列。