Advertisement
Guest User

Untitled

a guest
Dec 18th, 2017
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.83 KB | None | 0 0
  1. import java.io.File;
  2. import java.io.IOException;
  3. import java.io.PrintWriter;
  4. import java.util.Scanner;
  5.  
  6. import static java.lang.Math.min;
  7.  
  8. public class alg3_task_A {
  9.     public static void main(String[] args) throws IOException {
  10.         Scanner sc = new Scanner(new File("input.txt"));
  11.         PrintWriter printWr = new PrintWriter(new File("output.txt"));
  12.         //Scanner sc = new Scanner(System.in);
  13.         int N = sc.nextInt();
  14.         int K = sc.nextInt();
  15.         int[] money = new int[N];
  16.         long[] sum = new long[N];
  17.         int[] from = new int[N];
  18.         for (int i = 1; i < N - 1; i++) {
  19.             money[i] = sc.nextInt();
  20.         }
  21.         sc.close();
  22.         sum[0] = 0;
  23.         from[0] = -1;
  24.         int countJump = 0;
  25.         for (int i = 1; i < N; i++) {
  26.             int h = min(i, K);
  27.             sum[i] = sum[i - 1] + money[i];
  28.             from[i] = i - 1;
  29.             for (int j = 2; j <= h; j++) {
  30.                 if (sum[i] < sum[i - j] + money[i]) {
  31.                     sum[i] = sum[i - j] + money[i];
  32.                     from[i] = i - j;
  33.                 }
  34.             }
  35.         }
  36.         int i = N - 1;
  37.         StringBuilder out = new StringBuilder();
  38.         while (i >= 0) {
  39.             out.append(i + 1);
  40.             if (i != 0) {
  41.                 out.append(" ");
  42.                 countJump++;
  43.             }
  44.             i = from[i];
  45.         }
  46.         String[] ff = out.toString().split(" ");
  47.         out = new StringBuilder();
  48.         for (int j = ff.length - 1; j >= 0; j--) {
  49.             out.append(ff[j]);
  50.             if (j > 0) {
  51.                 out.append(" ");
  52.             }
  53.         }
  54.         printWr.print(sum[N - 1] + "\n" + countJump + "\n" + out.toString());
  55.         //System.out.print(sum[N - 1] + "\n" + countJump + "\n" + out.toString());
  56.         printWr.close();
  57.     }
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement