#4975. Lining Up 2

0

Lining Up 2

Lining Up 2

题目描述

有 NN 个人排成一列:第 11 个人、第 22 个人、…\ldots、第 NN 个人。 给出这些人的排列作为长度为 NN 的序列 A=(A1,A2,…,AN)A=(A _ 1,A _ 2,\ldots,A _ N)。 Ai (1≤i≤N)A _ i\ (1\leq i\leq N) 表示如下信息:

如果 Ai=−1A _ i=-1,第 ii 个人在队伍的最前面; 如果 Ai≠−1A _ i\neq -1,第 ii 个人紧跟在第 AiA _ i 个人的后面。

按从前到后的顺序打印人编号。

输入格式

输入从标准输入按如下格式给出: NN A1A _ 1 A2A _ 2 …\ldots ANA _ N

输出格式

如果第 s1s _ 1 个人、第 s2s _ 2 个人、…\ldots、第 sNs _ N 个人按此顺序站成一列,则按此顺序用空格分隔打印 s1s _ 1、s2s _ 2、…\ldots、sNs _ N。

6
4 1 -1 5 3 2
3 5 4 1 2 6
10
-1 1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9 10
30
3 25 20 6 18 12 26 1 29 -1 21 17 23 9 8 30 10 15 22 27 4 13 5 11 16 24 28 2 19 7
10 17 12 6 4 21 11 24 26 7 30 16 25 2 28 27 20 3 1 8 15 18 5 23 13 22 19 29 9 14

提示

1≤N≤3×1051\leq N\leq3\times10 ^ 5 Ai=−1A _ i=-1 or 1≤Ai≤N (1≤i≤N)1\leq A _ i\leq N\ (1\leq i\leq N) 给定的信息下恰好存在一种将 NN 个人排列一致的方式。 所有输入值均为整数。如果第 33 个人、第 55 个人、第 44 个人、第 11 个人、第 22 个人和第 66 个人从前到后按此顺序站成队伍,则该排列与给定的信息相符。 确实,可以看出:

第 11 个人紧跟在第 44 个人后面, 第 22 个人紧跟在第 11 个人后面, 第 33 个人在队伍最前面, 第 44 个人紧跟在第 55 个人后面, 第 55 个人紧跟在第 33 个人后面,且 第 66 个人紧跟在第 22 个人后面。

因此,按此顺序用空格分隔打印 33、55、44、11、22 和 66。

标签: AtCoder|abc337C

来源

AtCoder|abc337C