medon3

Jumps

Jan 15th, 2023
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.15 KB | None | 0 0
  1. import java.util.Arrays;
  2. import java.util.Scanner;
  3. import java.util.Stack;
  4.  
  5. public class Jumps2 {
  6.  
  7. public static void main(String[] args) {
  8.  
  9. Scanner scanner = new Scanner(System.in);
  10. int n = Integer.parseInt(scanner.nextLine());
  11. String[] numbersStr = scanner.nextLine().split(" ");
  12.  
  13. int[] numbers = new int[n];
  14. for (int i = 0; i < n; i++) {
  15. numbers[i] = Integer.parseInt(numbersStr[i]);
  16. }
  17.  
  18. int[] result = new int[n];
  19. Stack<Integer> stack = new Stack<>();
  20. for (int i = n - 1; i >= 0; i--) {
  21. while (!stack.isEmpty() && numbers[i] >= numbers[stack.peek()]) {
  22. stack.pop();
  23. }
  24.  
  25. if (!stack.isEmpty()) {
  26. result[i] = result[stack.peek()] + 1;
  27. }
  28. stack.push(i);
  29. }
  30.  
  31. StringBuilder output = new StringBuilder();
  32. output.append(Arrays.stream(result).max().getAsInt());
  33. output.append("\n");
  34. for (int x : result) {
  35. output.append(x);
  36. output.append(" ");
  37. }
  38.  
  39. System.out.println(output);
  40. }
  41. }
  42.  
  43.  
  44.  
Advertisement
Add Comment
Please, Sign In to add comment