만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

잘목시스

시간 제한1초메모리 제한512 MB

요약
S에 K개의 값을 끼워 넣어 길이가 N+K인 ZalSequence를 만듭니다. 각 값 v는 깊이가 30-v인 잎에 해당하는 이진 분할 트리의 값입니다.
난이도

보통10점 중 7점

유형
수학, 그리디, 구현
정답자
아직 제출이 없습니다

문제

다나카는 다키아 신화에 관심을 갖게 되었다(다키아인은 로마인이 오기 전에 지금의 루마니아 지역에 살았던 민족이다). 이 신화에서 잘목시스는 최고의 신이었고, 플레이스토로스는 전쟁의 신이었다. 다나카가 새롭게 해석한 신화에서 잘목시스에게는 강력한 새 공격인 ZalPunch가 있고, 그는 ZalSequence를 좋아한다.

ZalPunch는 음이 아닌 정수로 이루어진 수열에 적용할 수 있는 공격이다. 수열에서 양의 정수 xx 하나를 골라 x−1x-1 두 개로 바꾼다. 예를 들면 다음과 같다.

  • [1]은 [0, 0]이 된다.
  • [1, 23, 3]은 [1, 22, 22, 3]이 된다.
  • 하지만 [1, 3]은 [2, 1, 2]가 되지 않는다. 수열에서 원소의 순서가 중요하기 때문이다.

ZalSequence는 잘목시스가 좋아하는 수열이며, 다음 중 하나에 해당하는 수열이다.

  • 수열 [30].
  • 다른 ZalSequence에 ZalPunch를 적용해서 얻을 수 있는 수열.

예를 들어 [30], [29, 29], [29, 28, 27, 27]은 ZalSequence이지만 [28, 29, 28]은 아니다.

처음에 잘목시스는 길이가 N+KN + K인 ZalSequence를 만든다. 그런데 적 중 한 명이 이 수열의 값 중 KK개를 없애서, 남은 값은 NN개가 된다. 이 수열을 SS라고 하자. NN, KK, SS가 주어졌을 때, SS에 값 KK개를 끼워 넣어 길이가 N+KN + K인 임의의 ZalSequence를 만들어라. 모든 테스트 케이스에서 이것이 가능함이 보장된다.

입력

첫째 줄에 양의 정수 NN과 KK가 주어진다.

다음 줄에는 SS의 값인 음이 아닌 정수 NN개가 주어진다.

출력

한 줄에 길이가 N+KN + K인 음이 아닌 정수 수열을 출력한다. 이 수열은 ZalSequence이고, SS를 부분 수열로 포함한다. SS의 원소는 출력에서 떨어진 위치에 있을 수도 있다.

제한

  • 1≤N≤1,000,0001 \le N \le 1{,}000{,}000
  • 1≤K≤1,000,0001 \le K \le 1{,}000{,}000
  • 1≤N+K≤1,000,0001 \le N + K \le 1{,}000{,}000
  • 입력으로 주어지는 수열은 길이가 N+KN + K인 ZalSequence의 부분 수열이다.

힌트

첫 번째 예제에서 [29, 27, 25, 25, 26, 28]은 다음 ZalPunch를 차례로 적용해서 [30]으로부터 얻을 수 있다.

[30] → [29, 29] → [29, 28, 28] → [29, 27, 27, 28] → [29, 27, 26, 26, 28] → [29, 27, 25, 25, 26, 28]

두 번째 예제에서 [29, 28, 27, 26, 25, 25]는 다음 ZalPunch를 차례로 적용해서 [30]으로부터 얻을 수 있다.

[30] → [29, 29] → [29, 28, 28] → [29, 28, 27, 27] → [29, 28, 27, 26, 26] → [29, 28, 27, 26, 25, 25]

예제2

  1. 예제 1

    입력
    5 1
    29 27 25 25 28
    
    예상 출력
    29 27 25 25 26 28
    
  2. 예제 2

    입력
    1 5
    29
    
    예상 출력
    29 28 27 26 25 25