만드는 중입니다

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

아름다운 수열

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

요약
주어진 수열에서 인접한 두 원소를 정확히 K번 교환하여 만들 수 있는 사전순으로 가장 작은 수열을 구하는 문제입니다.
난이도

보통10점 중 6점

유형
그리디, 배열
정답자
아직 제출이 없습니다

문제

당신은 크기가 NN인 수열 AA를 선물 받았다. 당신은 수열이 사전 순으로 앞설수록 아름답다고 생각한다. 그래서 AA의 원소 순서를 바꿔 사전 순으로 가장 앞선 수열을 만들려고 한다. 그러나 원소 순서를 마음대로 바꾸는 것은 너무 쉬운 일이라 금방 흥미가 떨어질 것이다. 고민 끝에 다음 방법을 떠올렸다.

  • 음이 아닌 정수 KK를 정하고, AA의 인접한 원소를 뒤바꾸는 연산을 정확히 KK번 수행한다.

인접한 원소를 뒤바꾸는 것은 1≤i<N1 \leq i < N인 정수 ii에 대하여 AiA_i와 Ai+1A_{i+1}의 값을 서로 바꾸는 것을 의미한다. 예를 들어, 수열 {2,3,1}\{2, 3, 1\}에서 두 번째 원소와 세 번째 원소를 뒤바꾸면 {2,1,3}\{2, 1, 3\}이 되고, 다시 첫 번째 원소와 두 번째 원소를 뒤바꾸면 {1,2,3}\{1, 2, 3\}이 된다.

이 방법으로 가능한 한 사전 순으로 가장 앞선 수열을 만들려고 한다. 최종적으로 만들어지는 수열을 구하는 프로그램을 작성하라.

입력

첫째 줄에 AA의 크기 NN과 정한 값 KK가 공백을 사이에 두고 차례로 주어진다. (2≤N≤500 000(2 \leq N \leq 500\,000, 0≤K≤1018)0 \leq K \leq 10^{18})

둘째 줄에 AA의 원소 A1,A2,⋯ ,ANA_1, A_2, \cdots, A_N이 공백을 사이에 두고 차례로 주어진다. (−109≤Ai≤109(-10^9 \leq A_i \leq 10^9, 모든 AiA_i는 정수이다.))

출력

첫째 줄에 만들 수 있는 사전 순으로 가장 앞선 수열의 각 원소를 공백을 사이에 두고 차례로 출력한다.

힌트

수열 {a1,a2,⋯ ,aM}\{a_1, a_2, \cdots, a_M\}이 수열 {b1,b2,⋯ ,bM}\{b_1, b_2, \cdots, b_M\}보다 사전 순으로 앞선다는 것은 a1=b1,a2=b2,⋯ ,ai−1=bi−1a_1 = b_1, a_2 = b_2, \cdots, a_{i-1} = b_{i-1}이고 ai<bia_i < b_i인 정수 ii (1≤i≤M1 \leq i \leq M)가 존재한다는 뜻이다.

예제3

  1. 예제 1

    입력
    3 2
    2 3 1
    
    예상 출력
    1 2 3
    
  2. 예제 2

    입력
    3 3
    2 1 1
    
    예상 출력
    1 1 2
    
  3. 예제 3

    입력
    2 987654321987654321
    1 2
    
    예상 출력
    2 1