3
int maxValueAfterReverse(vector<int> &nums) {5
for (int i = 0; i < nums.size() - 1; ++i) {6
original += abs(nums[i] - nums[i + 1]);14
for (int i = n - 2; i >= 1; --i) {15
int old = nums[i - 1];18
int y1 = (nums[i - 1] + nums[i]) - abs(old - now) - a1 + original;19
int y2 = (nums[i - 1] - nums[i]) - abs(old - now) - a2 + original;20
int y3 = (nums[i] - nums[i - 1]) - abs(old - now) + a3 + original;21
int y4 = -(nums[i - 1] + nums[i]) - abs(old - now) + a4 + original;22
ans = max(max(y4, max(y1, max(y2, y3))), ans);24
a1 = min(a1, nums[i] + nums[i + 1] + abs(nums[i] - nums[i + 1]));25
a2 = min(a2, nums[i] - nums[i + 1] + abs(nums[i] - nums[i + 1]));26
a3 = max(a3, nums[i] - nums[i + 1] - abs(nums[i] - nums[i + 1]));27
a4 = max(a4, nums[i] + nums[i + 1] - abs(nums[i] - nums[i + 1]));28
ans = max(ans, -abs(old - now) + abs(old - nums[nums.size() - 1] + original));30
for (int i = 1; i < n - 1; ++i) {31
ans = max(ans, -abs(nums[i] - nums[i + 1]) + abs(nums[0] - nums[i + 1]) + original);