th0m45s5helby

Untitled

Sep 14th, 2021
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.05 KB | None | 0 0
  1. #include <iostream>
  2. #include <climits>
  3. using namespace std;
  4.  
  5. int maximizeExpression(int A[], int n)
  6. {
  7.     int first[n + 1], second[n], third[n - 1], fourth[n - 2];
  8.  
  9.     for (int i = 0; i <= n - 3; i++) {
  10.         first[i] = second[i] = third[i] = fourth[i] = INT_MIN;
  11.     }
  12.  
  13.     first[n - 2] = second[n - 2] = third[n - 2] = INT_MIN;
  14.     first[n - 1] = second[n - 1] = first[n] = INT_MIN;
  15.  
  16.     for (int i = n - 1; i >= 0; i--) {
  17.         first[i] = max(first[i + 1], A[i]);
  18.     }
  19.  
  20.     for (int i = n - 2; i >= 0; i--) {
  21.         second[i] = max(second[i + 1], first[i + 1] - A[i]);
  22.     }
  23.  
  24.     for (int i = n - 3; i >= 0; i--) {
  25.         third[i] = max(third[i + 1], second[i + 1] + A[i]);
  26.     }
  27.  
  28.     for (int i = n - 4; i >= 0; i--) {
  29.         fourth[i] = max(fourth[i + 1], third[i + 1] - A[i]);
  30.     }
  31.  
  32.     return fourth[0];
  33. }
  34.  
  35. int main()
  36.  
  37. {
  38.     int n;
  39.     cin>>n;
  40.    
  41.     int arr[n];
  42.     for(int i=0;i<n;i++){
  43.         cin>>arr[i];
  44.     }
  45.      if (n >= 4) {
  46.         cout << maximizeExpression(arr, n);
  47.     }
  48.  
  49.     return 0;
  50. }
Advertisement
Add Comment
Please, Sign In to add comment