
题目解析:就是按照优先级进行排序然后输出前k个的和即可
思路分析:把甜度和酸度封装成一个对象,然后重写sort方法,先按照arr进行降序排序,相同在按照brr升序排序 ,然后输出前k个的和即可
代码实现
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt(), k = scanner.nextInt();
Orange[] oranges = new Orange[n];
for (int i = 0; i < n; i++) {
oranges[i] = new Orange();
oranges[i].setB(scanner.nextInt());
}
for (int i = 0; i < n; i++) {
oranges[i].setA(scanner.nextInt());
}
Arrays.sort(oranges, (x, y) -> {
if (x.getA() == y.getB()) return x.getB() - y.getB();
return y.getA() - x.getA();
});
long retArr = 0, retBrr = 0;
for (int i = 0; i < k; i++) {
retArr += oranges[i].getA();
retBrr += oranges[i].getB();
}
System.out.println(retBrr + " " + retArr);
}
}
class Orange {
private int a;
private int b;
public Orange() {}
public Orange(int a, int b) {
this.a = a;
this.b = b;
}
public int getA() {
return a;
}
public void setA(int a) {
this.a = a;
}
public int getB() {
return b;
}
public void setB(int b) {
this.b = b;
}
}