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

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

피아노 연주

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

요약
간격이 K인 N개의 손가락에 M개의 음을 배정해 인접한 음 사이 난이도의 최댓값을 최소로 만들고, 그 최솟값을 출력한다.
난이도

보통10점 중 7점

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

문제

N개의 손가락을 가진 세빈이는 한 손만으로 모든 곡을 연주하는 최고의 피아니스트다.

세빈이의 이웃한 두 손가락 사이의 거리는 K로 일정하다. 따라서 i번째 손가락과 첫 번째 손가락 사이의 거리를 Xᵢ라 하면 Xᵢ = (i-1)K가 성립한다(1 ≤ i ≤ N).

세빈이는 M개의 음으로 이루어진 곡을 연주하려 한다. 각 음을 어떤 손가락으로 연주하느냐에 따라 곡이 쉬워질 수도, 어려워질 수도 있다.

i번째 음의 음높이를 Pᵢ라 하고, 이 음을 Fᵢ번째 손가락으로 연주한다 하자. i번째 음과 이웃한 (i+1)번째 음을 연주할 때의 난이도는 |(Pᵢ₊₁ - Pᵢ) - (X_Fᵢ₊₁ - X_Fᵢ)|다.

곡의 난이도는 이웃한 두 음을 연주할 때의 난이도의 최댓값으로 정의한다. 각 음을 어떤 손가락으로 연주할지 정해 곡의 난이도를 최소로 만드는 프로그램을 작성하시오.

입력

첫 번째 줄에 세빈이의 손가락 수와 곡을 이루는 음의 수를 나타내는 두 자연수 N과 M, 이웃한 두 손가락 사이의 거리를 나타내는 자연수 K가 공백을 두고 주어진다.

두 번째 줄에는 M개의 정수 P₁, ..., P_M이 공백을 두고 주어진다.

출력

첫 번째 줄에 곡의 난이도의 최솟값을 출력한다.

제한

모든 입력 데이터는 다음 조건을 만족한다.

  • 1 ≤ N ≤ 2 × 10⁵
  • 2 ≤ M ≤ 2 × 10⁵
  • 1 ≤ K ≤ 10⁹
  • X_N ≤ 10⁹
  • 1 ≤ Pᵢ ≤ 10⁹ (1 ≤ i ≤ M)

예제1

  1. 예제 1

    입력
    5 4 3
    7 2 9 3
    
    예상 출력
    1