import java.util.*;
class Main {
public int solution(int n, int k, int[] arr) {
int answer = -1;
TreeSet<Integer> Tset = new TreeSet<>(Collections.reverseOrder()); //내림차순으로 자동정
for(int i=0; i<n-2; i++) {
for(int lt=i+1; lt<n-1; lt++) {
for(int rt=lt+1; rt<n; rt++) {
Tset.add(arr[i]+arr[lt]+arr[rt]);
}
}
}
int cnt = 1;
for(int x : Tset) {
if(cnt == k) answer = x;
cnt++;
}
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner kb = new Scanner(System.in);
int n = kb.nextInt();
int k = kb.nextInt();
int[] arr = new int[n];
for(int i=0; i<n; i++) arr[i] = kb.nextInt();
System.out.println(T.solution(n,k,arr)) ;
}
}
++ for문의 바깥범위를 모두 n으로 해줘도 상관은없다!
j값이나, l값이 거짓이되면 자동으로 멈추기 때문..
3중 for문을 통해 완전탐색을 한 값을
내림차순 정렬인 TreeSet에 넣었다.
k번째 수 = count가 k일때의 값.
만약, count가 k값을 만나지 못했다면 -1;
TreeSet은 기본적으로 오름차순(1,2,3,4...)으로 숫자를 저장한다.
Set이기 때문에 당연히 중복값은 저장하지 않는다.
TreeSet<Integer> Tset = new TreeSet<>(Collections.reverseOrder());
Collections.reverseOrder를 이용하면 내림차순으로도 정렬이 가능하다!
TreeSet은 배열이 아니기때문에 index를 사용하지 않는다.
-> first() = 오름차순일시 최솟값, 내림차순일시 최대값.
-> last() = 오름차순일시 최대값, 내림차순일시 최솟값