Advertisement
knyazer

Untitled

May 6th, 2020
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.03 KB | None | 0 0
  1. package com.company;
  2.  
  3. import java.util.Scanner;
  4.  
  5. public class Main {
  6.  
  7.     static int[] copy(int[] arr) {
  8.         int[] cp = new int[arr.length];
  9.         for (int i = 0; i < arr.length; i++) {
  10.             cp[i] = arr[i];
  11.         }
  12.         return cp;
  13.     }
  14.  
  15.     static int[] algo(int[] data, int index, int[] steps) {
  16.         if (index == data.length - 1) return steps;
  17.         do {
  18.             if (data[index + 1] >= 0 || index == data.length - 2) {
  19.                 steps[index + 1] = data[index + 1];
  20.                 index += 1;
  21.             }
  22.             else if (index < data.length - 2 && data[index + 1] < 0 && data[index + 2] >= 0)
  23.             {
  24.                 steps[index + 2] = data[index + 2];
  25.                 index += 2;
  26.             }
  27.             else if (index < data.length - 2) {
  28.                 int[] stepsCp = copy(steps);
  29.                 stepsCp[index + 1] = data[index + 1];
  30.                 int[] r1 = algo(data, index + 1, stepsCp);
  31.  
  32.                 int[] stepsCp2 = copy(steps);
  33.                 stepsCp2[index + 2] = data[index + 2];
  34.                 int[] r2 = algo(data, index + 2, stepsCp2);
  35.  
  36.                 int m1 = 0, m2 = 0;
  37.                 for (int i = 0; i < r1.length; i++) m1 += r1[i];
  38.                 for (int i = 0; i < r2.length; i++) m2 += r2[i];
  39.  
  40.                 return m1 > m2 ? r1 : r2;
  41.             }
  42.         } while (index < data.length - 1);
  43.  
  44.         return steps;
  45.     }
  46.  
  47.     public static void main(String[] args) {
  48.         Scanner in = new Scanner(System.in);
  49.  
  50.         int N = in.nextInt();
  51.  
  52.         int[] data = new int[N];
  53.         int[] steps = new int[N];
  54.  
  55.         for (int i = 0; i < N; i++)
  56.         {
  57.             data[i] = in.nextInt();
  58.             steps[i] = 0;
  59.         }
  60.  
  61.         int[] res = algo(data, -1, steps);
  62.  
  63.         int max = 0;
  64.         for (int i = 0; i < res.length; i++)
  65.             max += res[i];
  66.  
  67.         System.out.println(max);
  68.         for (int i = 0; i < res.length; i++)
  69.             if (res[i] != 0) System.out.print((1 + i) + " ");
  70.     }
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement