fork download
  1. import java.util.Arrays;
  2. import java.util.Scanner;
  3.  
  4. class Main {
  5. static int[] treats;
  6. static int[][] dp;
  7. static int n;
  8.  
  9. public static void main(String[] args) throws java.lang.Exception {
  10. Scanner sc = new Scanner(System.in);
  11. n = sc.nextInt();
  12. treats = new int[n];
  13. for (int i = 0; i < n; i++) {
  14. treats[i] = sc.nextInt();
  15. }
  16. dp = new int[n][n];
  17. for (int i = 0; i < n; i++) {
  18. Arrays.fill(dp[i], -1);
  19. }
  20.  
  21. System.out.println(profit(0, n - 1));
  22.  
  23. }
  24.  
  25. private static int profit(int be, int en) {
  26. if (be > en) {
  27. return 0;
  28. }
  29. if (dp[be][en] != -1) {
  30. return dp[be][en];
  31. }
  32. int year = n - (en - be + 1) + 1;
  33. return dp[be][en] = Math.max(profit(be + 1, en) + treats[be] * year, profit(be, en - 1) + treats[en] * year);
  34. }
  35. }
Success #stdin #stdout 0.14s 54536KB
stdin
5
2
3
5
1
4
stdout
50