fork download
  1. import java.util.*;
  2.  
  3. class MergeArray{
  4. int[] A;
  5. private int[] tmp;
  6. private int k;
  7. private int cnt;
  8. public void merge_sort(int p, int r) { //배열 A를 클래스 멤버 변수로
  9. int q;
  10. if (p < r) {
  11. q = (p + r) / 2;
  12. merge_sort(p, q);
  13. merge_sort(q + 1, r);
  14. merge(p, q, r);
  15. }
  16. }
  17.  
  18. private void merge(int p, int q, int r) {
  19. int i = p;
  20. int j = q + 1;
  21. int t = 0; //배열은 0부터 시작하기에 0으로 초기화
  22. while (i <= q && j <= r) {
  23. if (A[i] <= A[j])
  24. tmp[t++] = A[i++];
  25. else
  26. tmp[t++] = A[j++];
  27. }
  28. while (i <= q)
  29. tmp[t++] = A[i++];
  30. while (j <= r)
  31. tmp[t++] = A[j++];
  32. i = p; t = 0; //바로 위 주석과 같은 이유
  33. while (i <= r) {
  34. A[i++] = tmp[t++];
  35. cnt++;
  36. if(cnt == k) {
  37. System.out.println(A[i - 1]);
  38. System.exit(0);
  39. }
  40. }
  41. }
  42.  
  43. MergeArray(int n, int k){
  44. A = new int[n];
  45. tmp = new int[n];
  46. this.k = k;
  47. cnt = 0;
  48. }
  49. }
  50.  
  51. class Ideone{
  52. public static void main(String[] args){
  53. Scanner sc = new Scanner(System.in);
  54. int n = sc.nextInt();
  55. int k = sc.nextInt();
  56.  
  57. MergeArray m = new MergeArray(n, k);
  58. for(int i = 0; i < n; i++)
  59. m.A[i] = sc.nextInt();
  60. m.merge_sort(0, n - 1); //배열은 0부터 n-1까지이기 때문에
  61. System.out.println(-1);
  62. sc.close();
  63. }
  64. }
Success #stdin #stdout 0.13s 52820KB
stdin
5 13
4 5 1 3 2
stdout
-1