paranid5

6 11.11

Nov 11th, 2021 (edited)
439
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.58 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4. import java.util.ArrayList;
  5. import java.util.Arrays;
  6. import java.util.Comparator;
  7.  
  8. import static java.lang.System.out;
  9.  
  10. public enum Main {;
  11.  
  12.     private static final int SIZE = 1000;
  13.  
  14.     public static final void main(final String[] args) throws IOException {
  15.         try (final var reader = new BufferedReader(new InputStreamReader(System.in))) {
  16.             final var nums = new double[SIZE];
  17.  
  18.             for (var i = 0; i < SIZE; i++)
  19.                 nums[i] = Double.parseDouble(reader.readLine().trim().replace(",", "."));
  20.  
  21.             var ind = 0;
  22.             final var filter = new ArrayList<ArrayList<Double>>(1);
  23.  
  24.             while (ind < nums.length) {
  25.                 final var list = new ArrayList<Double>(1);
  26.                 list.add(nums[ind++]);
  27.  
  28.                 while (ind < nums.length && Math.abs(nums[ind - 1] - nums[ind]) >= 8.0)
  29.                     list.add(nums[ind++]);
  30.  
  31.                 filter.add(list);
  32.             }
  33.  
  34.             out.println(
  35.                     filter.stream().map(list -> {
  36.                         final var size = list.size();
  37.                         final var dp = new double[size]; dp[0] = list.get(0);
  38.  
  39.                         for (var i = 1; i < size; i++)
  40.                             dp[i] = Math.max(list.get(i), list.get(i) + dp[i - 1]);
  41.  
  42.                         return Arrays.stream(dp).max().getAsDouble();
  43.                     }).max(Comparator.comparingDouble(Double::doubleValue)).get()
  44.             );
  45.         }
  46.     }
  47. }
Add Comment
Please, Sign In to add comment