• B. Box


    B. Box

    time limit per test

    1 second

    memory limit per test

    256 megabytes

    input

    standard input

    output

    standard output

    Permutation pp is a sequence of integers p=[p1,p2,…,pn]p=[p1,p2,…,pn], consisting of nn distinct (unique) positive integers between 11 and nn, inclusive. For example, the following sequences are permutations: [3,4,1,2][3,4,1,2], [1][1], [1,2][1,2]. The following sequences are not permutations: [0][0], [1,2,1][1,2,1], [2,3][2,3], [0,1,2][0,1,2].

    The important key is in the locked box that you need to open. To open the box you need to enter secret code. Secret code is a permutation pp of length nn.

    You don't know this permutation, you only know the array qq of prefix maximums of this permutation. Formally:

    • q1=p1q1=p1,
    • q2=max(p1,p2)q2=max(p1,p2),
    • q3=max(p1,p2,p3)q3=max(p1,p2,p3),
    • ...
    • qn=max(p1,p2,…,pn)qn=max(p1,p2,…,pn).

    You want to construct any possible suitable permutation (i.e. any such permutation, that calculated qq for this permutation is equal to the given array).

    Input

    The first line contains integer number tt (1≤t≤1041≤t≤104) — the number of test cases in the input. Then tt test cases follow.

    The first line of a test case contains one integer nn (1≤n≤105)(1≤n≤105) — the number of elements in the secret code permutation pp.

    The second line of a test case contains nn integers q1,q2,…,qnq1,q2,…,qn (1≤qi≤n)(1≤qi≤n) — elements of the array qq for secret permutation. It is guaranteed that qi≤qi+1qi≤qi+1 for all ii (1≤i

    The sum of all values nn over all the test cases in the input doesn't exceed 105105.

    Output

    For each test case, print:

    • If it's impossible to find such a permutation pp, print "-1" (without quotes).
    • Otherwise, print nn distinct integers p1,p2,…,pnp1,p2,…,pn (1≤pi≤n1≤pi≤n). If there are multiple possible answers, you can print any of them.

    Example

    input

    Copy

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

    output

    Copy

    1 3 4 5 2 
    -1
    2 1 
    1 
    

    Note

    In the first test case of the example answer [1,3,4,5,2][1,3,4,5,2] is the only possible answer:

    • q1=p1=1q1=p1=1;
    • q2=max(p1,p2)=3q2=max(p1,p2)=3;
    • q3=max(p1,p2,p3)=4q3=max(p1,p2,p3)=4;
    • q4=max(p1,p2,p3,p4)=5q4=max(p1,p2,p3,p4)=5;
    • q5=max(p1,p2,p3,p4,p5)=5q5=max(p1,p2,p3,p4,p5)=5.

    It can be proved that there are no answers for the second test case of the example.

    \=========================================================================

    模拟一下,放个队列即可,每当a值不等于上一个a值,那就说明了这个位置已经确定,一旦我们遇到一个确定位置,就把上一个位置到本位置之间的数字全部加入队列,这就是小于本位置的全部可能,当该取出数字的时候队列为空则是无解

    1. # include
    2. #include
    3. # include
    4. # include
    5. # include
    6. # include
    7. using namespace std;
    8. typedef long long int ll;
    9. int a[100000+10];
    10. int ans[100000+10];
    11. queue<int>q;
    12. vector<int>v;
    13. int main()
    14. {
    15. int t;
    16. cin>>t;
    17. while(t--)
    18. {
    19. int n;
    20. cin>>n;
    21. while(!q.empty())
    22. q.pop();
    23. v.clear();
    24. for(int i=1; i<=n; i++)
    25. {
    26. cin>>a[i];
    27. ans[i]=0;
    28. if(a[i]!=a[i-1])
    29. {
    30. v.push_back(a[i]);
    31. ans[i]=a[i];
    32. }
    33. }
    34. int now=0;
    35. int last=1,flag=0;
    36. for(int i=1; i<=n; i++)
    37. {
    38. if(ans[i])
    39. {
    40. for(int j=last;j
    41. q.push(j);
    42. last=v[now]+1;
    43. now++;
    44. }
    45. else
    46. {
    47. if(q.empty())
    48. {
    49. flag=1;
    50. break;
    51. }
    52. else
    53. {
    54. ans[i]=q.front();
    55. q.pop();
    56. }
    57. }
    58. }
    59. if(flag)
    60. {
    61. cout<<-1<
    62. continue;
    63. }
    64. for(int i=1;i<=n;i++)
    65. {
    66. cout<" ";
    67. }
    68. cout<
    69. }
    70. return 0;
    71. }

  • 相关阅读:
    CVE-2022-40684 Fortinet多个产品身份验证绕过漏洞复现
    中国棉纺织行业市场深度分析及发展规划咨询综合研究报告
    计算机基础 - 原码,反码,补码
    Elasticsearch:(二)3.安装Elasticsearch-head插件
    String的解析
    什么是Vant? Spring Cloud Nacos注册中心
    初始化一个Android项目时,Android Studio会自动生成一些文件和目录结构,以帮助你快速上手开发
    云原生之kubernetes调度约束(scheduler调度器)
    2022 CLion 中的Cygwin 配置(最全,最良心版)
    Python爬虫大作业+数据可视化分析(抓取python职位)
  • 原文地址:https://blog.csdn.net/jisuanji2606414/article/details/126323261