Solution #92397d70-a389-4044-add4-92afe50b405a
failedScore
0% (0/5)
Runtime
162μs
Delta
-100.0% vs parent
-100.0% vs best
Regression from parent
Score
0% (0/5)
Runtime
162μs
Delta
-100.0% vs parent
-100.0% vs best
Regression from parent
def solve(input):
jobs = input.get("jobs", [])
if not jobs:
return 0
jobs = sorted((tuple(job) for job in jobs), key=lambda x: x[1])
def bisect_right(a, x, lo=0, hi=None):
hi = len(a) if hi is None else hi
while lo < hi:
mid = (lo + hi) // 2
if x < a[mid]:
hi = mid
else:
lo = mid + 1
return lo
ends = [e for _, e, _ in jobs]
prev = [bisect_right(ends, jobs[i][0], 0, i) for i in range(len(jobs))]
def build_dp(i, dp):
take = jobs[i][2] + dp[prev[i]]
skip = dp[-1]
return dp + [(take if take > skip else skip)]
return __import__("functools").reduce(build_dp, range(len(jobs)), [0])[-1]