Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.File;
- import java.io.IOException;
- import java.io.PrintWriter;
- import java.util.Scanner;
- import static java.lang.Math.min;
- public class alg3_task_A {
- public static void main(String[] args) throws IOException {
- Scanner sc = new Scanner(new File("input.txt"));
- PrintWriter printWr = new PrintWriter(new File("output.txt"));
- //Scanner sc = new Scanner(System.in);
- int N = sc.nextInt();
- int K = sc.nextInt();
- int[] money = new int[N];
- long[] sum = new long[N];
- int[] from = new int[N];
- for (int i = 1; i < N - 1; i++) {
- money[i] = sc.nextInt();
- }
- sc.close();
- sum[0] = 0;
- from[0] = -1;
- int countJump = 0;
- for (int i = 1; i < N; i++) {
- int h = min(i, K);
- sum[i] = sum[i - 1] + money[i];
- from[i] = i - 1;
- for (int j = 2; j <= h; j++) {
- if (sum[i] < sum[i - j] + money[i]) {
- sum[i] = sum[i - j] + money[i];
- from[i] = i - j;
- }
- }
- }
- int i = N - 1;
- StringBuilder out = new StringBuilder();
- while (i >= 0) {
- out.append(i + 1);
- if (i != 0) {
- out.append(" ");
- countJump++;
- }
- i = from[i];
- }
- String[] ff = out.toString().split(" ");
- out = new StringBuilder();
- for (int j = ff.length - 1; j >= 0; j--) {
- out.append(ff[j]);
- if (j > 0) {
- out.append(" ");
- }
- }
- printWr.print(sum[N - 1] + "\n" + countJump + "\n" + out.toString());
- //System.out.print(sum[N - 1] + "\n" + countJump + "\n" + out.toString());
- printWr.close();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement