import
java.lang.*;
import
java.util.*;
class
GFG {
static
int
minDiff(
int
[] A,
int
K)
{
if
(A.length <= K +
1
)
return
0
;
PriorityQueue<Integer> maxHeap
=
new
PriorityQueue<>();
PriorityQueue<Integer> minHeap
=
new
PriorityQueue<>(
Collections.reverseOrder());
for
(
int
n : A) {
maxHeap.add(n);
if
(maxHeap.size() > K +
1
)
maxHeap.poll();
minHeap.add(n);
if
(minHeap.size() > K +
1
)
minHeap.poll();
}
List<Integer> maxList =
new
ArrayList<>();
while
(maxHeap.size() >
0
)
maxList.add(maxHeap.poll());
List<Integer> minList =
new
ArrayList<>();
while
(minHeap.size() >
0
)
minList.add(minHeap.poll());
int
mindiff = Integer.MAX_VALUE;
for
(
int
i =
0
; i <= K; i++) {
mindiff = Math.min(mindiff,
maxList.get(i)
- minList.get(K - i));
}
return
mindiff;
}
public
static
void
main(String[] args)
{
int
A[] = { -
1
,
3
, -
1
,
8
,
5
,
4
};
int
K =
3
;
System.out.println(minDiff(A, K));
}
}