<p>You are given an integer array <code>nums</code>. The <em>value</em> of this array is defined as the sum of <code>|nums[i] - nums[i + 1]|</code> for all <code>0 &lt;= i &lt; nums.length - 1</code>.</p>

<p>You are allowed to select any subarray of the given array and reverse it. You can perform this operation <strong>only once</strong>.</p>

<p>Find maximum possible value of the final array.</p>

<p>&nbsp;</p>
<p><strong class="example">Example 1:</strong></p>

<pre>
<strong>Input:</strong> nums = [2,3,1,5,4]
<strong>Output:</strong> 10
<b>Explanation: </b>By reversing the subarray [3,1,5] the array becomes [2,5,1,3,4] whose value is 10.
</pre>

<p><strong class="example">Example 2:</strong></p>

<pre>
<strong>Input:</strong> nums = [2,4,9,24,2,1,10]
<strong>Output:</strong> 68
</pre>

<p>&nbsp;</p>
<p><strong>Constraints:</strong></p>

<ul>
	<li><code>2 &lt;= nums.length &lt;= 3 * 10<sup>4</sup></code></li>
	<li><code>-10<sup>5</sup> &lt;= nums[i] &lt;= 10<sup>5</sup></code></li>
	<li>The answer is guaranteed to fit in a 32-bit integer.</li>
</ul>

class Solution {
    public:
        int maxValueAfterReverse(vector<int>& nums) {
                long long sum=0;

                        int maxMin=INT_MIN;

                                int minMax=INT_MAX;

                                        int maxInc=INT_MIN;

                                                for(int i=1;i<nums.size();i++){
                                                            int diff=abs(nums[i-1]-nums[i]);
                                                                        sum+=diff;

                                                                                    maxMin=max(maxMin,min(nums[i-1],nums[i]));
                                                                                                minMax=min(minMax,max(nums[i-1],nums[i]));

                                                                                                            maxInc=max(maxInc,abs(nums[0]-nums[i])-diff);
                                                                                                                        maxInc=max(maxInc,abs(nums.back()-nums[i-1])-diff);

                                                                                                                                }

                                                                                                                                        maxInc=max(maxInc,2*(maxMin-minMax));

                                                                                                                                                return sum+maxInc;
                                                                                                                                                        
                                                                                                                                                            }
                                                                                                                                                            };

42800