시간 제한메모리 제한제출정답맞힌 사람정답 비율
4 초 512 MB43181760.714%

문제

연우는 $N$($1 \le N \le 10^5$)개의 나무 블록을 갖고 있다. 연우는 이 $N$개의 나무 블록을 일렬로 배치해놓았다. 지나가다 우연히 그걸 본 지환은 연우가 한 배치가 너무 엉망이라고 생각했다.

지환은 인접한 나무 블록간의 높이 차이가 작으면 작을수록 좋은 배치라고 생각한다. 지환은 나열된 나무 블록에서 몇 개의 블록을 제거해서 인접한 블록간 높이 차이를 최대한 작게 만들려고 한다. 하지만 너무 많은 블록을 제거하면 연우가 싫어하기 때문에, 최소 $X$개 이상의 블록은 남겨두려고 한다.

지환은 이런 조건을 모두 만족하게 블록을 제거하는게 생각보다 쉽지 않은 일이라는 것을 깨닫고 당신에게 도움을 요청했다. 지환을 도와, 블록을 일부 제거해서 최소 $X$개 이상의 블록을 남겼을 때 만들 수 있는 인접한 블록간의 최대 높이 차이를 최소화하는 프로그램을 작성하시오.

입력

첫째 줄에 $N$, $X$가 공백으로 구분되어 주어진다($ 1 \le X \le N \le 10^5$).

둘째 줄에 연우가 처음 나열해 둔 나무 블록의 높이가 공백으로 구분되어 $N$개 주어진다. 각 높이는 $1$이상 $10^9$ 이하의 정수이다.

출력

첫째 줄에 최소 $X$개 이상의 블록을 남겨 둔 채 인접한 블록간 높이 차이의 최댓값을 가능한 한 작게 만들었을 때 높이 차이 최댓값을 출력한다.

예제 입력 1

6 3
5 4 1 8 6 7

예제 출력 1

1

$2,3,4$번째 블록을 제거하면 $5,6,7$ 높이의 세 블록만 남는다. 이 때 인접한 블록간의 높이 차이 최댓값은 $1$이고, 인접한 블록간 높이 차이의 최대치를 이보다 더 작게 만들 수 있는 방법은 없다.

출처