아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

개구리

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

요약
개구리가 각 돌에서 k번째로 가까운 돌로 점프할 때, 정확히 m번 점프한 뒤 도착하는 돌의 번호를 모든 시작 돌에 대해 구한다.
난이도

어려움10점 중 8점

유형
투 포인터, 이분 탐색, 구현
정답자
아직 제출이 없습니다

문제

길고 곧게 뻗은 시내에 물 위로 솟은 바위가 nn개 있습니다. 시내의 발원지에서 잰 각 바위의 위치는 p1<p2<⋯<pnp_1 < p_2 < \dots < p_n으로 엄격히 증가합니다. 한 마리 개구리가 바위 하나에 앉아 도약 훈련을 합니다. 현재 위치가 pip_i인 바위에 있을 때, 개구리는 언제나 자신에게서 kk번째로 가까운 바위로 뛰어오릅니다(거리는 ∣pj−pi∣|p_j - p_i|로 재며, 자신이 앉은 바위는 세지 않습니다). 정확히는 다음을 만족하는 바위 pjp_j로 이동합니다.

∣{ pa:∣pa−pi∣<∣pj−pi∣ }∣≤k그리고∣{ pa:∣pa−pi∣≤∣pj−pi∣ }∣>k.\left|\{\,p_a : |p_a - p_i| < |p_j - p_i|\,\}\right| \le k \quad\text{그리고}\quad \left|\{\,p_a : |p_a - p_i| \le |p_j - p_i|\,\}\right| > k.

kk번째로 가까운 바위가 (양쪽에 같은 거리로) 둘이어서 유일하지 않다면, 개구리는 발원지에 더 가까운 바위, 즉 위치 값이 더 작은 바위를 고릅니다. 각 시작 바위에 대해, 개구리가 정확히 mm번 도약한 뒤 앉아 있는 바위를 구하세요.

입력

첫 줄에 세 정수 nn, kk, mm이 주어집니다(1≤k<n≤1,000,0001 \le k < n \le 1{,}000{,}000, 1≤m≤10181 \le m \le 10^{18}). 각각 바위의 수, 도약 매개변수, 도약 횟수입니다. 둘째 줄에 바위의 위치 p1,p2,…,pnp_1, p_2, \dots, p_n이 증가하는 순서로 주어집니다(1≤p1<p2<⋯<pn≤10181 \le p_1 < p_2 < \dots < p_n \le 10^{18}).

출력

한 줄에 nn개의 정수 r1,r2,…,rnr_1, r_2, \dots, r_n을 공백 하나로 구분해 출력하세요. 각 값은 [1,n][1, n] 범위입니다. rir_i는 ii번째 바위에서 출발한 개구리가 mm번 도약한 뒤 도착하는 바위의 번호(입력 순서)입니다.

힌트

그림은 각 바위에서 개구리가 한 번 도약해 도달하는 바위를 보여줍니다.

예제3

  1. 예제 1

    입력
    5 2 4
    1 2 4 7 10
    
    예상 출력
    1 1 3 1 1
    
  2. 예제 2

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

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