Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.company;
- import java.util.Scanner;
- public class Main {
- static int[] copy(int[] arr) {
- int[] cp = new int[arr.length];
- for (int i = 0; i < arr.length; i++) {
- cp[i] = arr[i];
- }
- return cp;
- }
- static int[] algo(int[] data, int index, int[] steps) {
- if (index == data.length - 1) return steps;
- do {
- if (data[index + 1] >= 0 || index == data.length - 2) {
- steps[index + 1] = data[index + 1];
- index += 1;
- }
- else if (index < data.length - 2 && data[index + 1] < 0 && data[index + 2] >= 0)
- {
- steps[index + 2] = data[index + 2];
- index += 2;
- }
- else if (index < data.length - 2) {
- int[] stepsCp = copy(steps);
- stepsCp[index + 1] = data[index + 1];
- int[] r1 = algo(data, index + 1, stepsCp);
- int[] stepsCp2 = copy(steps);
- stepsCp2[index + 2] = data[index + 2];
- int[] r2 = algo(data, index + 2, stepsCp2);
- int m1 = 0, m2 = 0;
- for (int i = 0; i < r1.length; i++) m1 += r1[i];
- for (int i = 0; i < r2.length; i++) m2 += r2[i];
- return m1 > m2 ? r1 : r2;
- }
- } while (index < data.length - 1);
- return steps;
- }
- public static void main(String[] args) {
- Scanner in = new Scanner(System.in);
- int N = in.nextInt();
- int[] data = new int[N];
- int[] steps = new int[N];
- for (int i = 0; i < N; i++)
- {
- data[i] = in.nextInt();
- steps[i] = 0;
- }
- int[] res = algo(data, -1, steps);
- int max = 0;
- for (int i = 0; i < res.length; i++)
- max += res[i];
- System.out.println(max);
- for (int i = 0; i < res.length; i++)
- if (res[i] != 0) System.out.print((1 + i) + " ");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement