CF1701D.Permutation Restoration

普及+/提高

通过率:0%

时间限制:4.00s

内存限制:256MB

AC君温馨提醒

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

题目描述

Monocarp had a permutation aa of nn integers 11, 22, ..., nn (a permutation is an array where each element from 11 to nn occurs exactly once).

Then Monocarp calculated an array of integers bb of size nn, where bi=⌊iai⌋b_i = \left\lfloor \frac{i}{a_i} \right\rfloor. For example, if the permutation aa is [2,1,4,3][2, 1, 4, 3], then the array bb is equal to [⌊12⌋,⌊21⌋,⌊34⌋,⌊43⌋]=[0,2,0,1]\left[ \left\lfloor \frac{1}{2} \right\rfloor, \left\lfloor \frac{2}{1} \right\rfloor, \left\lfloor \frac{3}{4} \right\rfloor, \left\lfloor \frac{4}{3} \right\rfloor \right] = [0, 2, 0, 1].

Unfortunately, the Monocarp has lost his permutation, so he wants to restore it. Your task is to find a permutation aa that corresponds to the given array bb. If there are multiple possible permutations, then print any of them. The tests are constructed in such a way that least one suitable permutation exists.

Monocarp 原本有一个由 nn 个整数 1,2,…,n1, 2, \dots, n 构成的排列 aa(即一个每个元素 11 到 nn 恰好出现一次的数组)。

接着,Monocarp 计算了一个长度为 nn 的整数数组 bb,其中 bi=⌊iai⌋b_i = \left\lfloor \frac{i}{a_i} \right\rfloor。例如,若排列 aa 为 [2,1,4,3][2, 1, 4, 3],则数组 bb 为 [⌊12⌋,⌊21⌋,⌊34⌋,⌊43⌋]=[0,2,0,1]\left[ \left\lfloor \frac{1}{2} \right\rfloor, \left\lfloor \frac{2}{1} \right\rfloor, \left\lfloor \frac{3}{4} \right\rfloor, \left\lfloor \frac{4}{3} \right\rfloor \right] = [0, 2, 0, 1]。

不幸的是,Monocarp 丢失了他原来的排列,因此他希望将其恢复。你的任务是找出一个与给定数组 bb 对应的排列 aa。如果存在多个可能的排列,则输出任意一个即可。题目保证测试数据中至少存在一个满足条件的排列。

输入格式

The first line contains a single integer tt (1≤t≤1051 \le t \le 10^5) — number of test cases.

The first line of each test case contains a single integer nn (1≤n≤5⋅1051 \le n \le 5 \cdot 10^5).

The second line contains nn integers b1,b2,…,bnb_1, b_2, \dots, b_n (0≤bi≤n0 \le b_i \le n).

Additional constrains on the input:

  • the sum of nn over test cases does not exceed 5⋅1055 \cdot 10^5;
  • there exists at least one permutation aa that would yield this array bb.

第一行包含一个整数 tt(1≤t≤1051 \le t \le 10^5),表示测试用例的数量。

每个测试用例的第一行包含一个整数 nn(1≤n≤5⋅1051 \le n \le 5 \cdot 10^5)。

第二行包含 nn 个整数 b1,b2,…,bnb_1, b_2, \dots, b_n(0≤bi≤n0 \le b_i \le n)。

输入的额外约束:

  • 所有测试用例的 nn 之和不超过 5⋅1055 \cdot 10^5;
  • 至少存在一个排列 aa,能生成该数组 bb。

输出格式

For each test case, print nn integers — a permutation aa that corresponds to the given array bb. If there are multiple possible permutations, then print any of them.

对于每个测试用例,输出 nn 个整数——一个与给定数组 bb 对应的排列 aa。如果存在多个可能的排列,则输出其中任意一个即可。

输入输出样例

  • 输入#1

    4
    4
    0 2 0 1
    2
    1 1
    5
    0 0 1 4 1
    3
    0 1 3

    输出#1

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

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

首页