1class Solution(object):2def stoneGameIII(self, stoneValue):3"""4:type stoneValue: List[int]5:rtype: str6"""7n = len(stoneValue)8suffixSum = [0 for _ in range(n + 1)]9dp = [0 for _ in range(n + 1)]10for i in range(n - 1, -1, -1):11suffixSum[i] = suffixSum[i + 1] + stoneValue[i]12for i in range(n - 1, -1, -1):13dp[i] = stoneValue[i] + suffixSum[i + 1] - dp[i + 1]14for k in range(i + 1, min(n, i + 3)):15dp[i] = max(dp[i], suffixSum[i] - dp[k + 1])16if dp[0] * 2 == suffixSum[0]:17return "Tie"18elif dp[0] * 2 > suffixSum[0]:19return "Alice"20else:21return "Bob"