SUM is the sum of array A, cur means the current function value F(i).

We can see that F(i) = F(i-1) + SUM - n * A[n-i], others are pretty straightforward.

```
class Solution(object):
def maxRotateFunction(self, A):
"""
:type A: List[int]
:rtype: int
"""
n, SUM = len(A), sum(A)
MAX = cur = sum(i*A[i] for i in range(n))
for i in range(1, n):
cur += SUM - n * A[n-i]
MAX = max(MAX, cur)
return MAX
```