import
java.util.*;
class
Main {
static
void
pairs(
final
int
[] arr,
final
int
n,
final
int
k) {
int
smallest = Integer.MAX_VALUE, count =
0
;
Set<Integer> s =
new
TreeSet<>();
s.add(arr[
0
]);
for
(
int
i =
1
; i < n; i++) {
int
lower = Integer.MIN_VALUE;
int
upper = Integer.MAX_VALUE;
for
(Integer x : s) {
if
(x <= (k - arr[i]) && x >= lower) {
lower = x;
}
if
(x >= (k - arr[i]) && x <= upper) {
upper = x;
}
}
int
curr_min = Math.min(Math.abs(lower + arr[i] - k), Math.abs(upper + arr[i] - k));
if
(curr_min < smallest) {
smallest = curr_min;
count =
1
;
}
else
if
(curr_min == smallest)
count++;
s.add(arr[i]);
}
System.out.println(
"Minimal Value = "
+ smallest);
System.out.println(
"Total Pairs = "
+ count);
}
public
static
void
main(String[] args) {
int
[] arr = {
3
,
5
,
7
,
5
,
1
,
9
,
9
};
int
k =
12
;
int
n = arr.length;
pairs(arr, n, k);
}
}