์์ด์ ์ ๋ ฌํ์ ๋ ๋ ์ ์ฌ์ด์ ๊ฐ๊ฒฉ์ด M ์ด์์ด๋ผ๋ฉด ๊ตฌํ ์ ์๋ ์ฐจ์ด ๊ฐ์ ์ ๋ฐ์ดํธ ํ๋ค. ์ด๋ ์ผ์ชฝ์ ์๋ ์ A ๋ผ๊ณ ํ์ ๋ ์ด์ B ๋ค์ ์๋ ์๋ค์ ์ฐจ์ด ๊ฐ์ด ํ์ฌ ๊ตฌํ B - A ๋ผ๋ ์ฐจ์ด ๊ฐ ์ด์์ด ๋๊ธฐ ๋๋ฌธ์ ๋ ์ด์ ๊ตฌํ๋ ์๋ฏธ๊ฐ ์๋ค. ์ด๋๋ ์ด์ A ์ ๊ฐ์ ์ค๋ฅธ์ชฝ์ผ๋ก ํ ์นธ ์ด๋์ํจ๋ค. ์ด๋ ๊ฒ ๋๋ฉด ์ด์ ์ฎ๊ฒจ์ง A' ๋ผ๋ ๊ฐ๊ณผ B ์ ์๋ก์ด ์ฐจ์ด๋ฅผ ๊ตฌํ๊ฒ ๋๋๋ฐ ์ด ์ฐจ์ด๋ A์ ๊ฐ์ด ์ฆ๊ฐํ์ ๊ฒ์ด๋ฏ๋ก ์ด์ ์ ๊ตฌํ B - A ๋ณด๋ค ๋ ์์ ์ฐจ์ด๊ฐ ๋ ์ ์๋ค. ์ด๋ ์ด ๊ฐ์ด M ์ด์์ด๋ฉด ๋ค์ ์ ๋ฐ์ดํธ๋ฅผ ํ๋ค.
๋ง์ฝ B - A ๊ฐ M ๋ณด๋ค ์์ ๊ฐ์ด๋ผ๋ฉด ์ฌ์ด์ ์ฐจ์ด๋ฅผ ํฌ๊ฒ ํด์ผ ํ๋ฏ๋ก ์ด๋๋ B ์ ๊ฐ์ ์ฆ๊ฐ์ํจ๋ค.
- ๋ ์ ์ฌ์ด์ ์ฐจ์ด๊ฐ M ๋ณด๋ค ํฌ๋ค๋ฉด A ๋ฅผ ์ค๋ฅธ์ชฝ์ผ๋ก ํ ์นธ ์ด๋
1-1. ์ด๋ ๋ ์ ์ฌ์ด์ ์ฐจ์ด๋ ๊ฐ์ฅ ์์ ๊ฐ์ผ๋ก ์ ๋ฐ์ดํธ- ๋ ์ ์ฌ์ด์ ์ฐจ์ด๊ฐ M ๋ณด๋ค ์๋ค๋ฉด B ๋ฅผ ์ค๋ฅธ์ชฝ์ผ๋ก ํ ์นธ ์ด๋
1, 2 ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
import java.util.*;
import java.io.*;
public class Main {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
long M = sc.nextLong();
long[] sequence = new long[N];
for (int i = 0; i < N; i++) {
sequence[i] = sc.nextLong();
}
int left = 0;
int right = 0;
Arrays.sort(sequence);
long minGap = Long.MAX_VALUE;
while (left <= right && right < N) {
System.out.println(left + " " + right);
long gap = sequence[right] - sequence[left];
if (gap < M) {
right++;
continue;
}
minGap = Math.min(minGap, gap);
left++;
}
System.out.println(minGap);
}
}