2
public double maxAverageRatio(int[][] classes, int extraStudents) {3
PriorityQueue<double[]> pq =5
new Comparator<double[]>() {6
public int compare(double[] a, double[] b) {7
double adiff = (a[0] + 1) / (a[1] + 1) - (a[0] / a[1]);8
double bdiff = (b[0] + 1) / (b[1] + 1) - (b[0] / b[1]);9
if (adiff == bdiff) return 0;10
return adiff > bdiff ? -1 : 1;14
for (int[] c : classes) pq.add(new double[] {c[0], c[1]});16
for (int i = 0; i < extraStudents; i++) {17
double[] curr = pq.poll();18
pq.add(new double[] {curr[0] + 1, curr[1] + 1});22
while (!pq.isEmpty()) {23
double[] curr = pq.poll();24
sum += curr[0] / curr[1];27
return sum / classes.length;