가장 먼 가까운 집 2
일직선 위에 집들이 있다. 각 집의 위치는 정수로 주어진다.
두 집 사이의 거리는 두 위치의 차이의 절댓값이다.
어떤 집에서 가까운 집이라고 부르기 위해서는 두 집 사이의 거리가 \(K\) 이하여야 한다. 각 집마다, 가까운 집들 중에서 가장 먼 집까지의 거리를 구하라.
가까운 다른 집이 없다면 그 집의 답은 -1이다.
입력
첫째 줄에 집의 개수 \(N\)과 거리 제한 \(K\)가 공백으로 구분되어 주어진다.
둘째 줄에 집의 위치 \(N\)개가 공백으로 구분되어 주어진다.
출력
입력으로 주어진 집의 순서대로, 각 집의 답을 공백으로 구분하여 한 줄에 출력한다.
각 집의 답은 거리 차이가 \(K\) 이하인 다른 집들 중 가장 먼 집까지의 거리이다.
조건을 만족하는 다른 집이 없다면 -1을 출력한다.
제한 사항
- \(2 \le N \le 100,000\)
- \(1 \le K \le 1,000,000,000\)
- 집의 위치는 \(1\) 이상 \(1,000,000,000\) 이하의 정수이다.
- 같은 위치에 있는 집은 없다.
- 집의 위치는 정렬되어 있지 않을 수 있다.
예제 입력 1
6 6
1 3 7 9 13 20
예제 출력 1
6 6 6 6 6 -1
첫 번째 집의 위치는 1이다. 거리 제한 안에 있는 집은 위치 3과 7의 집이고, 그중 가장 먼 거리는 6이다.
마지막 집의 위치는 20이다.
거리 제한 안에 있는 다른 집이 없으므로 답은 -1이다.
예제 입력 2
5 4
10 1 6 14 3
예제 출력 2
4 2 4 4 3
코멘트