import
java.util.ArrayList;
import
java.util.Collections;
import
java.util.Comparator;
import
java.util.HashSet;
class
GFG {
static
class
Pair {
int
first;
int
second;
Pair(
int
first,
int
second) {
this
.first = first;
this
.second = second;
}
}
public
static
int
maximumValue(
int
arr[],
int
powr[],
int
K,
int
N) {
ArrayList<Pair> v =
new
ArrayList<Pair>();
for
(
int
i =
0
; i < N; i++) {
v.add(
new
Pair(
0
,
0
));
v.get(i).first = powr[i];
v.get(i).second = arr[i];
}
Collections.sort(v,
new
Comparator<Pair>() {
@Override
public
int
compare(
final
Pair lhs, Pair rhs) {
return
lhs.first > rhs.first ?
1
: -
1
;
};
});
int
res =
0
;
int
sum =
0
;
HashSet<Pair> s =
new
HashSet<Pair>();
for
(
int
i = N -
1
; i >=
0
; i--) {
s.add(
new
Pair(v.get(i).second, i));
sum += v.get(i).second;
if
(s.size() > K) {
Pair it = s.iterator().next();
sum -= it.first;
s.remove(it);
}
res = Math.max(res, sum * v.get(i).first);
}
return
res;
}
public
static
void
main(String args[]) {
int
arr[] = {
11
,
10
,
7
,
6
,
9
};
int
powr[] = {
3
,
2
,
4
,
1
,
1
};
int
K =
2
;
int
N = arr.length;
System.out.println(maximumValue(arr, powr, K, N));
}
}