CF1738D.Permutation Addicts

普及/提高-

通过率:0%

AC君温馨提醒

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

题目描述

Given a permutation a1,a2,,ana_1, a_2, \dots, a_n of integers from 11 to nn , and a threshold kk with 0kn0 \leq k \leq n , you compute a sequence b1,b2,,bnb_1, b_2, \dots, b_n as follows.

For every 1in1 \leq i \leq n in increasing order, let x=aix = a_i .

  • If xkx \leq k , set bxb_{x} to the last element aja_j ( 1j<i1 \leq j < i ) that aj>ka_j > k . If no such element aja_j exists, set bx=n+1b_{x} = n+1 .
  • If x>kx > k , set bxb_{x} to the last element aja_j ( 1j<i1 \leq j < i ) that ajka_j \leq k . If no such element aja_j exists, set bx=0b_{x} = 0 .

Unfortunately, after the sequence b1,b2,,bnb_1, b_2, \dots, b_n has been completely computed, the permutation a1,a2,,ana_1, a_2, \dots, a_n and the threshold kk are discarded.

Now you only have the sequence b1,b2,,bnb_1, b_2, \dots, b_n . Your task is to find any possible permutation a1,a2,,ana_1, a_2, \dots, a_n and threshold kk that produce the sequence b1,b2,,bnb_1, b_2, \dots, b_n . It is guaranteed that there exists at least one pair of permutation a1,a2,,ana_1, a_2, \dots, a_n and threshold kk that produce the sequence b1,b2,,bnb_1, b_2, \dots, b_n .

A permutation of integers from 11 to nn is a sequence of length nn which contains all integers from 11 to nn exactly once.

输入格式

Each test contains multiple test cases. The first line contains an integer tt ( 1t1051 \leq t \leq 10^5 ) — the number of test cases. The following lines contain the description of each test case.

The first line of each test case contains an integer nn ( 1n1051 \leq n \leq 10^5 ), indicating the length of the permutation aa .

The second line of each test case contains nn integers b1,b2,,bnb_1, b_2, \dots, b_n ( 0bin+10 \leq b_i \leq n+1 ), indicating the elements of the sequence bb .

It is guaranteed that there exists at least one pair of permutation a1,a2,,ana_1, a_2, \dots, a_n and threshold kk that produce the sequence b1,b2,,bnb_1, b_2, \dots, b_n .

It is guaranteed that the sum of nn over all test cases does not exceed 10510^5 .

输出格式

For each test case, output the threshold kk ( 0kn0 \leq k \leq n ) in the first line, and then output the permutation a1,a2,,ana_1, a_2, \dots, a_n ( 1ain1 \leq a_i \leq n ) in the second line such that the permutation a1,a2,,ana_1, a_2, \dots, a_n and threshold kk produce the sequence b1,b2,,bnb_1, b_2, \dots, b_n . If there are multiple solutions, you can output any of them.

输入输出样例

  • 输入#1

    3
    4
    5 3 1 2
    6
    7 7 7 3 3 3
    6
    4 4 4 0 0 0

    输出#1

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

说明/提示

For the first test case, permutation a=[1,3,2,4]a = [1,3,2,4] and threshold k=2k = 2 will produce sequence bb as follows.

  • When i=1i = 1 , x=ai=1kx = a_i = 1 \leq k , there is no aja_j ( 1j<i1 \leq j < i ) that aj>ka_j > k . Therefore, b1=n+1=5b_1 = n + 1 = 5 .
  • When i=2i = 2 , x=ai=3>kx = a_i = 3 > k , the last element aja_j that ajka_j \leq k is a1a_1 . Therefore, b3=a1=1b_3 = a_1 = 1 .
  • When i=3i = 3 , x=ai=2kx = a_i = 2 \leq k , the last element aja_j that aj>ka_j > k is a2a_2 . Therefore, b2=a2=3b_2 = a_2 = 3 .
  • When i=4i = 4 , x=ai=4>kx = a_i = 4 > k , the last element aja_j that ajka_j \leq k is a3a_3 . Therefore, b4=a3=2b_4 = a_3 = 2 .

Finally, we obtain sequence b=[5,3,1,2]b = [5,3,1,2] . For the second test case, permutation a=[1,2,3,4,5,6]a = [1,2,3,4,5,6] and threshold k=3k = 3 will produce sequence bb as follows.

  • When i=1,2,3i = 1, 2, 3 , aika_i \leq k , there is no aja_j ( 1j<i1 \leq j < i ) that aj>ka_j > k . Therefore, b1=b2=b3=n+1=7b_1 = b_2 = b_3 = n + 1 = 7 .
  • When i=4,5,6i = 4, 5, 6 , ai>ka_i > k , the last element aja_j that ajka_j \leq k is a3a_3 . Therefore, b4=b5=b6=a3=3b_4 = b_5 = b_6 = a_3 = 3 .

Finally, we obtain sequence b=[7,7,7,3,3,3]b = [7,7,7,3,3,3] . For the third test case, permutation a=[6,5,4,3,2,1]a = [6,5,4,3,2,1] and threshold k=3k = 3 will produce sequence bb as follows.

  • When i=1,2,3i = 1, 2, 3 , ai>ka_i > k , there is no aja_j ( 1j<i1 \leq j < i ) that ajka_j \leq k . Therefore, b4=b5=b6=0b_4 = b_5 = b_6 = 0 .
  • When i=4,5,6i = 4, 5, 6 , aika_i \leq k , the last element aja_j that aj>ka_j > k is a3a_3 . Therefore, b1=b2=b3=a3=4b_1 = b_2 = b_3 = a_3 = 4 .

Finally, we obtain sequence b=[4,4,4,0,0,0]b = [4,4,4,0,0,0] .

首页