-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathClosestNumbers.java
More file actions
69 lines (61 loc) · 2.3 KB
/
Copy pathClosestNumbers.java
File metadata and controls
69 lines (61 loc) · 2.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedHashSet;
import java.util.Scanner;
import java.util.StringTokenizer;
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author rn-sshawish
*/
public class ClosestNumbers {
public static void main(String[] args)throws Exception {
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(input.readLine());
ArrayList<Integer> data = new ArrayList<>(n);
StringTokenizer tokn = new StringTokenizer(input.readLine());
for (int i = 0; i < n; i++) {
data.add(Integer.parseInt(tokn.nextToken()));
}
Collections.sort(data);
int min = Integer.MAX_VALUE;
ArrayList<Integer> values = new ArrayList<>();
for (int i = 0; i < n-1; i++) {
if (data.get(i).equals(data.get(i+1)) ) {
continue;
}
boolean found = false;
if (Math.abs(data.get(i) - data.get(i+1)) < min) {
min = Math.abs(data.get(i) - data.get(i+1));
values.clear();
values.add(data.get(i));
values.add(data.get(i+1));
found = true;
}else if (Math.abs(data.get(i) - data.get(i+1)) == min) {
values.add(data.get(i));
values.add(data.get(i+1));
found = true;
}
if (Math.abs(data.get(i+1) - data.get(i)) < min && !found) {
min = Math.abs(data.get(i+1) - data.get(i));
values.clear();
values.add(data.get(i));
values.add(data.get(i+1));
}else if (Math.abs(data.get(i+1) - data.get(i)) == min && !found) {
values.add(data.get(i));
values.add(data.get(i+1));
}
}
StringBuilder out = new StringBuilder();
values.forEach((value) -> {
out.append(value).append(" ");
});
System.out.println(out.toString().trim());
}
}