1class Solution {2public:3int maxRotateFunction(vector<int> &A) {4long sum = 0, fn = 0;5int len = A.size();6for (int i = 0; i < len; i++) {7sum += A[i];8fn += (i * A[i]);9}1011long l = 1, r;12long newfn = fn;1314while (l < len) {15r = l + len - 1;1617long removed = (l - 1) * A[l - 1];18long added = r * A[r % len];1920newfn = newfn - removed + added - sum;2122fn = max(fn, newfn);2324l++;25}2627return (int)fn;28}29};