2
from functools import lru_cache6
def maxValue(self, events: List[List[int]], k: int) -> int:7
if k == 1: # optimization for TLE test case 57/678
return max([event[2] for event in events])11
event_starts = [event[0] for event in events] # enables binary search15
if j == 0: # out of turns17
if i >= len(events): # end of events array19
max_score = events[i][2]21
# get minimum index where start day is greater than current end day22
next_index_minimum = bisect.bisect_left(event_starts, events[i][1] + 1)24
# check each possibility from the minimum next index until end of the array25
for k in range(next_index_minimum, len(events)):26
max_score = max(max_score, events[i][2] + dp(k, j - 1))28
# check if we can get a better score if we skip this index altogether29
max_score = max(max_score, dp(i + 1, j))