4668: 排队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个人。
- 所有输入值都是整数。