Advertisement
Guest User

Untitled

a guest
Nov 14th, 2018
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.99 KB | None | 0 0
  1. static long solve(int[] input) {
  2. int n = input.length;
  3. long[][] dp = new long[n][2];
  4. dp[0][0] = input[0];
  5. dp[0][1] = -input[0];
  6. for (int i = 1; i < n; i++) {
  7. dp[i][0] = Long.MIN_VALUE;
  8. dp[i][1] = Long.MAX_VALUE;
  9. long sum = 0;
  10. for (int j = i; j >= Math.max(0, i - 2); j--) {
  11. sum += input[j];
  12. if (j - 1 >= 0) {
  13. dp[i][0] = Math.max(dp[i][0], dp[j - 1][1] + sum);
  14. } else {
  15. dp[i][0] = Math.max(dp[i][0], sum);
  16. }
  17. }
  18. sum = 0;
  19. for (int j = i; j >= Math.max(0, i - 2); j--) {
  20. sum -= input[j];
  21. if (j - 1 >= 0) {
  22. dp[i][1] = Math.min(dp[i][1], dp[j - 1][0] + sum);
  23. } else {
  24. dp[i][1] = Math.min(dp[i][1], sum);
  25. }
  26. }
  27. }
  28. return dp[n - 1][0];
  29. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement