Let’s suppose you have an array a, a stack s (initially empty) and an array b (also initially empty).
You may perform the following operations until both a and s are empty:
- Take the first element of a, push it into s and remove it from a (if a is not empty);
- Take the top element from s, append it to the end of array b and remove it from s (if s is not empty).
You can perform these operations in arbitrary order.
If there exists a way to perform the operations such that array b is sorted in non-descending order in the end, then array a is called stack-sortable.
For example, [3, 1, 2] is stack-sortable, because b will be sorted if we perform the following operations:
- Remove 3 from a and push it into s;
- Remove 1 from a and push it into s;
- Remove 1 from s and append it to the end of b;
- Remove 2 from a and push it into s;
- Remove 2 from s and append it to the end of b;
- Remove 3 from s and append it to the end of b.
After all these operations b = [1, 2, 3], so [3, 1, 2] is stack-sortable. [2, 3, 1] is not stack-sortable.
You are given k first elements of some permutation p of size n (recall that a permutation of size n is an array of size n where each integer from 1 to n occurs exactly once). You have to restore the remaining n - k elements of this permutation so it is stack-sortable. If there are multiple answers, choose the answer such that p is lexicographically maximal (an array q is lexicographically greater than an array p iff there exists some integer k such that for every i < k qi = pi, and qk > pk). You may not swap or change any of first k elements of the permutation.
Print the lexicographically maximal permutation p you can obtain.
If there exists no answer then output -1.
Input
The first line contains two integers n and k (2 ≤ n ≤ 200000, 1 ≤ k < n) — the size of a desired permutation, and the number of elements you are given, respectively.
The second line contains k integers p1, p2, …, pk (1 ≤ pi ≤ n) — the first k elements of p. These integers are pairwise distinct.
Output
If it is possible to restore a stack-sortable permutation p of size n such that the first k elements of p are equal to elements given in the input, print lexicographically maximal such permutation.
Otherwise print -1.
Examples
input
1 | 5 3 |
output
1 | 3 2 1 5 4 |
input
1 | 5 3 |
output
1 | -1 |
input
1 | 5 1 |
output
1 | 3 2 1 5 4 |
input
1 | 5 2 |
output
1 | -1 |
题解
题意:一个长度为n的序列,已知长度为k的前缀,然后球一个序列,使按顺序进栈然后出栈顺序可以是1~n,使字典序最大
1.考虑相邻的两个数 x,y x<y,则x进栈之后就要出栈,x出栈的条件是 1~x-1 都出栈了.然后大部分的 -1 就可以判掉了. 然后就把x出栈
2.考虑目前出栈已经出到了 s (s还没出栈),如果当前的值 =s,就出栈,s 出栈之后就把栈里剩下的,从栈顶开始,能出栈就出栈(我是新开了一个栈来维护没有出栈的)
3.再从1开始模拟一遍,如果最后不是1~n都出栈了且只出栈了一次就输出答案,否则输出 -1
1 |
|