1
// Same as https://leetcode.com/problems/maximum-profit-in-job-scheduling/2
// Time -> O(nlogn), where n = length of rides array3
// Space -> O(n), where n = length of rides array7
* @param {number[][]} rides10
var maxTaxiEarnings = function (n, rides) {11
const len = rides.length;13
rides.sort((a, b) => {18
function binarySearch(idx) {23
let mid = Math.trunc((low + high) / 2);25
if (rides[mid][1] <= rides[idx][0]) low = mid + 1;29
return high === 0 ? -1 : high - 1;32
let dp = new Array(len).fill(0);33
dp[0] = rides[0][2] + (rides[0][1] - rides[0][0]);35
for (let i = 1; i < len; i++) {36
dp[i] = rides[i][2] + (rides[i][1] - rides[i][0]);37
let j = binarySearch(i);39
if (j !== -1) dp[i] += dp[j];41
dp[i] = Math.max(dp[i], dp[i - 1]);