만드는 중입니다

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

로봇

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

요약
로봇을 옮겨 원 전체를 덮을 때, 로봇이 이동하는 거리의 최댓값이 가장 작은 값을 구합니다.
난이도

보통10점 중 7점

유형
이분 탐색, 그리디, 정렬, 수학
정답자
아직 제출이 없습니다

문제

N개의 로봇이 원 위에 놓여 있다. 원 위의 위치는 가장 북쪽을 위치 0으로 하고, 원을 MM등분하는 나눔점에 시계 방향으로 순서대로 1부터 M−1M-1까지 번호를 붙여 정한다. 따라서 위치 0부터 M−1M-1까지가 정의된다(그림 1). 로봇들은 처음에 서로 다른 N개의 위치에 놓여 있다.

원 위의 두 위치 x와 y 사이의 거리는 y−xy - x (y≥xy \ge x)로 정의한다. 로봇 RiR_i가 위치 xix_i에 있으면, 로봇은 자신을 기준으로 반시계 방향과 시계 방향으로 범위 R>0R > 0 안의 점들을 감시할 수 있다. 위치 xix_i에서 반시계 방향으로 거리 RR만큼 떨어진 위치를 aa, 시계 방향으로 거리 RR만큼 떨어진 위치를 bb라 하면, 로봇 RiR_i는 원 위에서 시계 방향으로 aa에서 bb까지의 호를 감시한다.

원의 모든 부분을 감시하려고 한다. 처음 위치에서 감시하지 못하는 부분이 있으면 로봇을 옮겨서 원 전체를 감시하도록 한다. M≤2RNM \le 2RN이면 원 전체를 감시할 수 있는 이동이 항상 존재한다.

로봇은 위에서 정의한 원 위의 위치로만 이동할 수 있고, 각 로봇은 많아야 한 번만 이동할 수 있다. 로봇들이 이동한 거리의 최댓값을 최소로 하려고 한다.

N, R, M과 로봇들의 초기 위치가 주어질 때, 원 전체를 감시할 수 있도록 로봇을 이동했을 때 최대 이동 거리의 최솟값을 구하시오.

입력

첫 줄에 로봇의 개수를 나타내는 정수 N(1≤N≤1,000,0001 \le N \le 1{,}000{,}000)이 주어진다. 둘째 줄에는 감시 범위 R과 원 위의 위치를 정하는 정수 M이 주어진다(1≤R,M≤1091 \le R, M \le 10^9, N≤M≤2RNN \le M \le 2RN). 셋째 줄에는 로봇의 초기 위치를 나타내는 서로 다른 N개의 정수 xix_i(0≤xi≤M−10 \le x_i \le M-1)가 공백으로 구분되어 주어진다.

출력

원 전체를 감시할 수 있도록 로봇들을 이동시킬 때, 최대 이동 거리의 최솟값을 출력한다.

예제2

  1. 예제 1

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

    입력
    6
    1 11
    0 1 2 3 4 5
    
    예상 출력
    2