4
Engineer(int speed, int efficiency) {6
this.efficiency = efficiency;11
public int maxPerformance(int n, int[] speed, int[] efficiency, int k) {12
List<Engineer> engineers = new ArrayList<>();13
for (int i = 0; i < n; i++) {14
engineers.add(new Engineer(speed[i], efficiency[i]));16
engineers.sort((a, b) -> b.efficiency - a.efficiency);17
PriorityQueue<Engineer> maxHeap = new PriorityQueue<>((a, b) -> a.speed - b.speed);18
long maxPerformance = 0l, totalSpeed = 0l;19
for (Engineer engineer : engineers) {20
if (maxHeap.size() == k) {21
totalSpeed -= maxHeap.poll().speed;23
totalSpeed += engineer.speed;24
maxHeap.offer(engineer);25
maxPerformance = Math.max(maxPerformance, totalSpeed * (long) engineer.efficiency);27
return (int) (maxPerformance % 1_000_000_007);