1
# Runtime: 5941 ms (Top 24.26%) | Memory: 59.9 MB (Top 86.39%)3
def maxTotalFruits(self, fruits: List[List[int]], startPos: int, k: int) -> int:4
arr = [0 for _ in range(2 * k + 1)]5
for pos, numOfFruit in fruits:6
if pos < startPos - k or pos > startPos + k:8
arr[pos - (startPos - k)] += numOfFruit10
left, right = sum(arr[: k + 1]), sum(arr[k:])11
maxSeen = max(left, right)13
turn = 1 # turning point14
for i in range(2, k + 1, 2):15
left = left - arr[i - 2] - arr[i - 1] + arr[k + turn]16
right = right - arr[~(i - 2)] - arr[~(i - 1)] + arr[k - turn]17
maxSeen = max(maxSeen, left, right)