Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- import java.lang.*;
- class Main {
- static long maximumSum_simplified(int[] A) {
- int len = A.length;
- long[] maxSum = new long[len + 1];
- for (int start = 0, end; start < len - 1; start = end) {
- end = start + 1;
- if (A[end] <= A[start]) {
- while (end + 1 < len && A[end + 1] <= A[end]) end++;
- for (int i = Math.max(end - 1, start + 1); i <= end; i++) {
- maxSum[i + 1] = Math.max(maxSum[start] + A[start] - A[i],
- maxSum[start + 1] + A[start + 1] - A[i]);
- }
- } else {
- while (end + 1 < len && A[end + 1] >= A[end]) end++;
- for (int i = Math.max(end - 1, start + 1); i <= end; i++) {
- maxSum[i + 1] = Math.max(maxSum[start] + A[i] - A[start],
- maxSum[start + 1] + A[i] - A[start + 1]);
- }
- }
- }
- return maxSum[len];
- }
- public static void main(String[] args) {
- Scanner sc=new Scanner(System.in);
- int n;
- n=sc.nextInt();
- int[] arr=new int[n];
- for(int i=0;i<n;i++){
- arr[i]=sc.nextInt();
- }
- System.out.println(maximumSum_simplified(arr));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment