블록 배치
시간 제한4초메모리 제한512 MB
블록을 일부 제거해 X개 이상을 남기면서 인접한 남은 블록 사이 높이 차이의 최댓값을 최소로 만든다.
문제
연우는 ()개의 나무 블록을 갖고 있다. 연우는 이 개의 나무 블록을 일렬로 배치해놓았다. 지나가다 우연히 그걸 본 지환은 연우가 한 배치가 너무 엉망이라고 생각했다.
지환은 인접한 나무 블록간의 높이 차이가 작으면 작을수록 좋은 배치라고 생각한다. 지환은 나열된 나무 블록에서 몇 개의 블록을 제거해서 인접한 블록간 높이 차이를 최대한 작게 만들려고 한다. 하지만 너무 많은 블록을 제거하면 연우가 싫어하기 때문에, 최소 개 이상의 블록은 남겨두려고 한다.
지환은 이런 조건을 모두 만족하게 블록을 제거하는게 생각보다 쉽지 않은 일이라는 것을 깨닫고 당신에게 도움을 요청했다. 지환을 도와, 블록을 일부 제거해서 최소 개 이상의 블록을 남겼을 때 만들 수 있는 인접한 블록간의 최대 높이 차이를 최소화하는 프로그램을 작성하시오.
입력
첫째 줄에 , 가 공백으로 구분되어 주어진다().
둘째 줄에 연우가 처음 나열해 둔 나무 블록의 높이가 공백으로 구분되어 개 주어진다. 각 높이는 이상 이하의 정수이다.
출력
첫째 줄에 최소 개 이상의 블록을 남겨 둔 채 인접한 블록간 높이 차이의 최댓값을 가능한 한 작게 만들었을 때 높이 차이 최댓값을 출력한다.