2
public int[] maximumBeauty(int[][] items, int[] queries) {3
int[] ans = new int[queries.length];4
Arrays.sort(items, (a, b) -> (a[0] - b[0]));5
int maxBeautySoFar = Integer.MIN_VALUE;6
int[] maxBeauty = new int[items.length];8
for (int i = 0; i < items.length; i++) {9
if (maxBeautySoFar < items[i][1]) maxBeautySoFar = items[i][1];10
maxBeauty[i] = maxBeautySoFar;13
for (int i = 0; i < queries.length; i++) {14
int idx = findLargestIdxWithPriceLessThan(items, queries[i]);15
if (idx != Integer.MIN_VALUE) ans[i] = maxBeauty[idx];20
public int findLargestIdxWithPriceLessThan(int[][] items, int price) {22
int r = items.length - 1;23
int maxIdxLessThanEqualToPrice = Integer.MIN_VALUE;25
int mid = (l + r) / 2;26
if (items[mid][0] > price) {29
maxIdxLessThanEqualToPrice = Math.max(maxIdxLessThanEqualToPrice, mid);33
return maxIdxLessThanEqualToPrice;