CF1158C.Permutation recovery

提高+/省选-

通过率:0%

时间限制:1.00s

内存限制:256MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

Vasya has written some permutation p1,p2,…,pnp_1, p_2, \ldots, p_n of integers from 11 to nn, so for all 1≤i≤n1 \leq i \leq n it is true that 1≤pi≤n1 \leq p_i \leq n and all p1,p2,…,pnp_1, p_2, \ldots, p_n are different. After that he wrote nn numbers next1,next2,…,nextnnext_1, next_2, \ldots, next_n. The number nextinext_i is equal to the minimal index i<j≤ni \lt j \leq n, such that pj>pip_j \gt p_i. If there is no such jj let's let's define as nexti=n+1next_i = n + 1.

In the evening Vasya went home from school and due to rain, his notebook got wet. Now it is impossible to read some written numbers. Permutation and some values nextinext_i are completely lost! If for some ii the value nextinext_i is lost, let's say that nexti=−1next_i = -1.

You are given numbers next1,next2,…,nextnnext_1, next_2, \ldots, next_n (maybe some of them are equal to −1-1). Help Vasya to find such permutation p1,p2,…,pnp_1, p_2, \ldots, p_n of integers from 11 to nn, that he can write it to the notebook and all numbers nextinext_i, which are not equal to −1-1, will be correct.

瓦西娅写下了某个 11 到 nn 的排列 p1,p2,…,pnp_1, p_2, \ldots, p_n,即对所有 1≤i≤n1 \leq i \leq n 均满足 1≤pi≤n1 \leq p_i \leq n,且 p1,p2,…,pnp_1, p_2, \ldots, p_n 互不相同。随后,他写下了 nn 个数 next1,next2,…,nextnnext_1, next_2, \ldots, next_n。其中,nextinext_i 等于满足 i<j≤ni \lt j \leq n 且 pj>pip_j \gt p_i 的最小下标 jj;若不存在这样的 jj,则定义 nexti=n+1next_i = n + 1。

当晚瓦西娅放学回家时因下雨导致笔记本被淋湿,部分数字现已无法辨认。排列本身及部分 nextinext_i 的值已完全丢失!若对某个 ii,其 nextinext_i 的值丢失,则记为 nexti=−1next_i = -1。

现给出 next1,next2,…,nextnnext_1, next_2, \ldots, next_n(其中部分值可能为 −1-1)。请帮助瓦西娅找出一个 11 到 nn 的排列 p1,p2,…,pnp_1, p_2, \ldots, p_n,使得将其写入笔记本后,所有不等于 −1-1 的 nextinext_i 值均正确。

输入格式

The first line contains one integer tt — the number of test cases (1≤t≤100 0001 \leq t \leq 100\,000).

Next 2⋅t2 \cdot t lines contains the description of test cases,two lines for each. The first line contains one integer nn — the length of the permutation, written by Vasya (1≤n≤500 0001 \leq n \leq 500\,000). The second line contains nn integers next1,next2,…,nextnnext_1, next_2, \ldots, next_n, separated by spaces (nexti=−1next_i = -1 or i<nexti≤n+1i \lt next_i \leq n + 1).

It is guaranteed, that the sum of nn in all test cases doesn't exceed 500 000500\,000.

In hacks you can only use one test case, so T=1T = 1.

第一行包含一个整数 tt —— 测试用例的数量(1≤t≤100 0001 \leq t \leq 100\,000)。

接下来的 2⋅t2 \cdot t 行描述了测试用例,每个测试用例占两行。第一行包含一个整数 nn —— Vasya 写下的排列的长度(1≤n≤500 0001 \leq n \leq 500\,000)。第二行包含 nn 个整数 next1,next2,…,nextnnext_1, next_2, \ldots, next_n,以空格分隔(其中 nexti=−1next_i = -1 或 i<nexti≤n+1i \lt next_i \leq n + 1)。

保证所有测试用例中 nn 的总和不超过 500 000500\,000。

在 hack 中,你只能使用一个测试用例,因此 T=1T = 1。

输出格式

Print TT lines, in ii-th of them answer to the ii-th test case.

If there is no such permutations p1,p2,…,pnp_1, p_2, \ldots, p_n of integers from 11 to nn, that Vasya could write, print the only number −1-1.

In the other case print nn different integers p1,p2,…,pnp_1, p_2, \ldots, p_n, separated by spaces (1≤pi≤n1 \leq p_i \leq n). All defined values of nextinext_i which are not equal to −1-1 should be computed correctly p1,p2,…,pnp_1, p_2, \ldots, p_n using defenition given in the statement of the problem. If there exists more than one solution you can find any of them.

输出 TT 行,其中第 ii 行为第 ii 个测试用例的答案。

如果不存在满足条件的、由 11 到 nn 的整数组成的排列 p1,p2,…,pnp_1, p_2, \ldots, p_n(即 Vasya 可能写出的排列),则仅输出数字 −1-1。

否则,输出 nn 个互不相同的整数 p1,p2,…,pnp_1, p_2, \ldots, p_n,以空格分隔(需满足 1≤pi≤n1 \leq p_i \leq n)。所有不等于 −1-1 的 nextinext_i 值,均须根据题目陈述中所给定义,利用该排列 p1,p2,…,pnp_1, p_2, \ldots, p_n 正确计算得出。若存在多个可行解,输出任意一个即可。

输入输出样例

  • 输入#1

    6
    3
    2 3 4
    2
    3 3
    3
    -1 -1 -1
    3
    3 4 -1
    1
    2
    4
    4 -1 4 5

    输出#1

    1 2 3
    2 1
    2 1 3
    -1
    1
    3 2 1 4

说明/提示

In the first test case for permutation p=[1,2,3]p = [1, 2, 3] Vasya should write next=[2,3,4]next = [2, 3, 4], because each number in permutation is less than next. It's easy to see, that it is the only satisfying permutation.

In the third test case, any permutation can be the answer because all numbers nextinext_i are lost.

In the fourth test case, there is no satisfying permutation, so the answer is −1-1.

在第一个测试用例中,对于排列 p=[1,2,3]p = [1, 2, 3],Vasya 应写出 next=[2,3,4]next = [2, 3, 4],因为排列中的每个数均小于其对应的 nextnext 中的数。显然,这是唯一满足条件的排列。

在第三个测试用例中,任意排列均可作为答案,因为所有 nextinext_i 均已丢失。

在第四个测试用例中,不存在满足条件的排列,因此答案为 −1-1。

输入解题思路,AI测评打分。不知道怎么写?

首页