2
* @param {number[]} packages3
* @param {number[][]} boxes6
var minWastedSpace = function (packages, boxes) {10
totalPackagesSize = 0n,11
minBoxesAreaForAnySupplier = BigInt(Number.MAX_SAFE_INTEGER),15
totalBoxesAreaForSupplier;16
packages.sort(function (a, b) {19
for (let i = 0; i < packages.length; i++) {20
totalPackagesSize += BigInt(packages[i]);23
for (let i = 0; i < boxes.length; i++) {24
boxes[i].sort(function (a, b) {28
totalBoxesAreaForSupplier = 0n;29
if (boxes[i][boxes[i].length - 1] < packages[packages.length - 1]) {30
//This supplier is not big enough box for the largest package, hence this supplier can't be used.33
for (let b = 0; b < boxes[i].length; b++) {34
coverdPackagesIndex = binaryLowerBound(40
if (coverdPackagesIndex !== -1) {41
totalBoxesAreaForSupplier +=42
BigInt(boxes[i][b]) * BigInt(coverdPackagesIndex - p + 1);43
p = coverdPackagesIndex + 1;44
if (p === packages.length) {49
if (p === packages.length) {50
//Check if the current supplier was able to pack all the packages.51
if (totalBoxesAreaForSupplier < minBoxesAreaForAnySupplier) {52
minBoxesAreaForAnySupplier = totalBoxesAreaForSupplier;56
if (minBoxesAreaForAnySupplier !== BigInt(Number.MAX_SAFE_INTEGER)) {57
return (minBoxesAreaForAnySupplier - totalPackagesSize) % 1000000007n;62
function binaryLowerBound(arr, left, right, key) {65
while (left <= right) {66
mid = left + Math.floor((right - left) / 2);67
if (arr[mid] <= key) {