import
java.util.ArrayList;
import
java.util.Collections;
import
java.util.Comparator;
class
GFG {
static
class
Pair {
int
first;
int
second;
Pair(
int
i,
int
j) {
this
.first = i;
this
.second = j;
}
}
static
ArrayList<Integer> maxSumSubsequence(
int
[] arr,
int
N,
int
K) {
ArrayList<Pair> use =
new
ArrayList<Pair>();
for
(
int
i =
0
; i < N; i++) {
use.add(
new
Pair(arr[i], i));
}
Collections.sort(use,
new
Comparator<Pair>() {
@Override
public
int
compare(Pair i, Pair j) {
return
i.first - j.first;
}
});
ArrayList<Integer> ans =
new
ArrayList<Integer>();
for
(
int
i = N -
1
; i >= N - K; i--) {
ans.add(use.get(i).second);
}
Collections.sort(ans);
for
(
int
i =
0
; i < ans.size(); i++)
ans.set(i, arr[ans.get(i)]);
return
ans;
}
public
static
void
main(String args[]) {
int
N =
9
;
int
[] arr = {
6
,
3
,
4
,
1
,
1
,
8
,
7
, -
4
,
2
};
int
K =
5
;
ArrayList<Integer> res = maxSumSubsequence(arr, N, K);
for
(
int
i : res)
System.out.print(i +
" "
);
}
}