[Solved] Dessert Wizard - Help need in dp problem

problem link

help me out what I am doing wrong??

#include <bits/stdc++.h>
using namespace std;

typedef long long               ll;  
#define F                       first
#define S                       second

void solve() {
        int n;cin>>n;
        ll  arr[n];
        vector<pair<ll,ll>> left(n);
        vector<pair<ll,ll>> rigt(n);
        for(int i=0;i<n;i++){
            cin>>arr[i];
            left[i].F = left[i].S = arr[i];
            rigt[i].F = rigt[i].S = arr[i];
        }
        for(int i=1;i<n;i++){
            left[i].F = max(left[i-1].F + left[i].F , left[i].F);
            left[i].S = min(left[i-1].S + left[i].S , left[i].S);
        }
        for(int i=1;i<n;i++){
            left[i].F = max(left[i-1].F , left[i].F);
            left[i].S = min(left[i-1].S , left[i].S);
        }
        for(int i=n-2;i>=0;i--){
            rigt[i].F = max(rigt[i+1].F + rigt[i].F , rigt[i].F);
            rigt[i].S = min(rigt[i+1].S + rigt[i].S , rigt[i].S);
        }
        for(int i=n-2;i>=0;i--){
            rigt[i].F = max(rigt[i+1].F , rigt[i].F);
            rigt[i].S = min(rigt[i+1].S , rigt[i].S);
        }
        ll ans = INT_MIN;
        for(int i=1;i<=n-2;i++){
            ans = max({abs(left[i].F-rigt[i+1].S),abs(left[i-1].F-rigt[i].S),ans});
        }
        for(int i=1;i<=n-2;i++){
            ans = max({abs(rigt[i].F-left[i-1].S), abs(rigt[i+1].F-left[i].S),ans});
        }
        cout << ans;
}

int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cout.precision(20);
  int T = 1; cin >> T;
  while (T--) {
    solve();
    if (T) cout << endl;
  }
  return 0;
}```

Consider the following input

1
2
10 2

UPD : GOT AC

AC solution

#include <bits/stdc++.h>
using namespace std;

typedef long long               ll;  
#define F                       first
#define S                       second

void solve() {
        int n;cin>>n;
        ll  arr[n];
        vector<pair<ll,ll>> left(n);
        vector<pair<ll,ll>> rigt(n);
        for(int i=0;i<n;i++){
            cin>>arr[i];
            left[i].F = left[i].S = arr[i];
            rigt[i].F = rigt[i].S = arr[i];
        }
        for(int i=1;i<n;i++){
            left[i].F = max(left[i-1].F + left[i].F , left[i].F);
            left[i].S = min(left[i-1].S + left[i].S , left[i].S);
        }

        for(int i=n-2;i>=0;i--){
            rigt[i].F = max(rigt[i+1].F + rigt[i].F , rigt[i].F);
            rigt[i].S = min(rigt[i+1].S + rigt[i].S , rigt[i].S);
        }

        ll ans = INT_MIN;
for(int i=0;i<=n-2;i++){
ans = max({abs(left[i].F-rigt[i+1].S),abs(rigt[i+1].F-left[i].S),ans});
}

        cout << ans;
}



int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cout.precision(20);

  
  int T = 1; cin >> T;
  while (T--) {
    solve();
    if (T) cout << endl;
  }
  return 0;
}```