1793. Maximum Score of a Good Subarray class Solution: def maximumScore(self, nums: List[int], k: int) -> int: m = [float("inf")] * len(nums) minv = nums[k] for i in range(k - 1, -1, - 1): if nums[i] < minv: minv = nums[i] m[i] = minv minv = nums[k] for i in range(k + 1,len(nums)): if nums[i] < minv: minv = nums[i] m[i] = minv m[k] = nums[k] l = 0 r = len(nums) - 1 ans = 0 while l <= k <= r : if m[l] < m[r]: ans = max(ans, (r - l + 1) * m[l]) l += 1 else : ans = max(ans, (r - l + 1) * m[r]) r -= 1 return ans