问题 E: 排队2

内存限制:1024 MB 时间限制:2 S 标准输入输出
题目类型:传统 评测方式:文本比较 上传者:
提交:83 通过:9

题目描述

有 N 个人站成一排:第 1 个人,第 2 个人,......,第 N 个人。
给定人们的排列作为长度为 N 的序列 A=(A1,A2,…,AN)。

  • 如果 Ai=−1,表示第 i 个人在队列的最前面;
  • 如果 Ai≠−1,表示第 i 个人站在第 Ai 个人的后面。
打印出排列中人们的编号,从前到后。



输入格式

输入以以下格式从标准输入给出:
N
A1 A2 …… AN

输出格式

如果人 s1、人 s2、......、人 sN 按照这个顺序站成一排,请按此顺序打印 s1、s2、...... 和 sN,以空格分隔。

输入样例 复制

6
4 1 -1 5 3 2

输出样例 复制

3 5 4 1 2 6

数据范围与提示

如果人物3、人物5、人物4、人物1、人物2和人物6按照这个顺序从前到后站在队列中,则这个排列与给定信息相匹配。
确实,可以看出:
- 人物1站在人物4的后面,
- 人物2站在人物1的后面,
- 人物3站在队列的最前面,
- 人物4站在人物5的后面,
- 人物5站在人物3的后面,
- 人物6站在人物2的后面。

因此,请按此顺序打印3、5、4、1、2和6,以空格分隔。

满足以下条件:
- 1≤N≤3×10^5
- Ai=−1 或 1≤Ai≤N (1≤i≤N)
- 有且仅有一种方法可以按照给定的信息排列这N个人。
- 所有输入值都是整数。