fork download
  1. import java.io.BufferedReader;
  2. import java.io.InputStreamReader;
  3. import java.util.*;
  4.  
  5. class Main
  6. {
  7. public int[] find3Numbers(int[] a)
  8. {
  9. int low;
  10. int middle;
  11. int high;
  12. int i;
  13. // find the first pair a[i] < a[i + 1]
  14. for(i = 0; i < a.length - 2 && a[i] >= a[i + 1]; i++);
  15. if(i == a.length - 2) throw new IllegalArgumentException("");
  16. low = a[i];
  17. middle = a[i + 1];
  18. for(;i < a.length - 1; i++) {
  19. // find next pairs a[i] < a[i + 1]
  20. if(a[i] < a[i + 1]) {
  21. if(a[i + 1] > middle) {
  22. // a[i + 1] > middle => low, middle, a[i + 1]
  23. high = a[i + 1];
  24. return new int[] {low, middle, high};
  25. } else if (a[i] > low) {
  26. // a[i] > low => low, a[i], a[i + 1]
  27. middle = a[i];
  28. high = a[i + 1];
  29. return new int[] {low, middle, high};
  30. } else {
  31. // low = a[i]; middle = a[i + 1]
  32. low = a[i];
  33. middle = a[i + 1];
  34. }
  35. }
  36. }
  37. throw new IllegalArgumentException("");
  38. }
  39.  
  40. public static void main (String[] args) throws java.lang.Exception
  41. {
  42. Main main = new Main();
  43. int n = Integer.parseInt(r.readLine());
  44. for(int i = 0; i < n; i++) {
  45. String[] str = r.readLine().split(" ");
  46. int[] num = new int[str.length];
  47. for(int j = 0; j < str.length; j++) num[j] = Integer.parseInt(str[j]);
  48. System.out.println(Arrays.toString(main.find3Numbers(num)));
  49. }
  50. }
  51. }
Success #stdin #stdout 0.03s 245632KB
stdin
14
1 6 6 2 5 3
1 6 6 0 3 3 4
3 6 6 4 7 5 4
1 2 3 4
7 5 6 2 3 4
10 12 1 2 3
12 11 10 5 6 2 30
12 11 10 5 6 2 3 4
1 5 5 3 2 10
1 5 5 6 2 10
1 10 5 3 2 6 12
1 10 5 6 8 12 1
1 10 5 12 1 2 3 40
10 10 10 3 4 5 7 9
stdout
[1, 2, 5]
[0, 3, 4]
[3, 6, 7]
[1, 2, 3]
[2, 3, 4]
[1, 2, 3]
[5, 6, 30]
[2, 3, 4]
[1, 5, 10]
[1, 5, 6]
[1, 2, 6]
[1, 5, 6]
[1, 10, 12]
[3, 4, 5]