• Source
    1. import java.util.Scanner;
    2.  
    3. public class Main {
    4. public static void main(String[] args) {
    5. Scanner scanner = new Scanner(System.in);
    6. int n = scanner.nextInt();
    7. int k = scanner.nextInt();
    8. int m = n - k;
    9. if (m == 0) {
    10. System.out.println(0);
    11. return;
    12. }
    13. long[] a = new long[n];
    14. for (int i = 0; i < n; i++) {
    15. a[i] = scanner.nextLong();
    16. }
    17. long[] dp = new long[m + 1];
    18. for (int j = 0; j <= m; j++) {
    19. dp[j] = Long.MAX_VALUE;
    20. }
    21. dp[0] = 0;
    22. for (int i = 0; i < n; i++) {
    23. long current = a[i];
    24. int maxJ = Math.min(m, i + 1);
    25. for (int j = maxJ; j >= 1; j--) {
    26. if (dp[j - 1] != Long.MAX_VALUE) {
    27. long temp = dp[j - 1] + (m - j) * current;
    28. if (temp < dp[j]) {
    29. dp[j] = temp;
    30. }
    31. }
    32. }
    33. }
    34. System.out.println(dp[m]);
    35. }
    36. }