fork download
  1. from typing import List
  2. import ast
  3.  
  4. class Solution:
  5. def maxTaxiEarnings(self, n: int, rides: List[List[int]]) -> int:
  6. rides.sort()
  7. dp = [0] * (n + 1)
  8.  
  9. for i in range(n - 1, -1, -1):
  10. dp[i] = dp[i + 1]
  11.  
  12. while rides and rides[-1][0] == i:
  13. start, end, tip = rides.pop()
  14. dp[i] = max(dp[i], dp[end] + end - start + tip)
  15.  
  16. return dp[0]
  17.  
  18.  
  19. lines = []
  20. while True:
  21. try:
  22. line = input().strip()
  23. if line:
  24. lines.append(line)
  25. except EOFError:
  26. break
  27.  
  28. sol = Solution()
  29.  
  30. for i in range(0, len(lines), 2):
  31. n = int(lines[i])
  32. rides = ast.literal_eval(lines[i + 1])
  33. print(sol.maxTaxiEarnings(n, rides))
Success #stdin #stdout 0.18s 17168KB
stdin
5
[[2,5,4],[1,5,1]]
20
[[1,6,1],[3,10,2],[10,12,3],[11,12,2],[12,15,2],[13,18,1]]
stdout
7
20