Advertisement
Hey_Donny

JumpTwo

May 30th, 2022
21
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.09 KB | None | 0 0
  1. import java.util.LinkedList;
  2. import java.util.Scanner;
  3.  
  4. public class JumpTwo {
  5.  
  6.  
  7. public static void main(String[] args) {
  8.  
  9. Scanner s = new Scanner(System.in);
  10. int num = Integer.parseInt(s.nextLine());
  11. int[] n = new int[num];
  12. int[] m = new int[num];
  13.  
  14. String[] str = s.nextLine().split(" ");
  15.  
  16. for (int i = 0; i < num; i++) {
  17. n[i] = Integer.parseInt(str[i]);
  18. }
  19.  
  20.  
  21. LinkedList stack = new LinkedList<>();
  22.  
  23. int maxSizeStack = 0;
  24.  
  25. stack.add(n[num - 1]);
  26. m[num - 1] = 0;
  27.  
  28. for (int i = num - 2, k = num - 2; i >= 0; i--) {
  29. if (n[i] < (int) stack.get(0)) {
  30. stack.offerFirst(n[i]);
  31. if (stack.size() > maxSizeStack) maxSizeStack = stack.size();
  32.  
  33. m[k] = stack.size() - 1;
  34. k--;
  35.  
  36. continue;
  37. }
  38. for (int j = 0; j < stack.size(); j++) {
  39. if (n[i] >= (int) stack.getLast()) {
  40. stack.clear();
  41. stack.add(n[i]);
  42. if (stack.size() > maxSizeStack) maxSizeStack = stack.size();
  43. k--;
  44. break;
  45. }
  46. if (n[i] > (int) stack.get(j)) {
  47. if (stack.size() > maxSizeStack) maxSizeStack = stack.size();
  48. stack.remove(j);
  49. j--;
  50. } else if (n[i] < (int) stack.get(j)) {
  51. stack.offerFirst(n[i]);
  52. m[k] = stack.size() - 1;
  53. k--;
  54. break;
  55. } else {
  56. if (stack.size() > maxSizeStack) maxSizeStack = stack.size();
  57. m[k] = stack.size() - 1;
  58. k--;
  59. break;
  60. }
  61.  
  62. }
  63.  
  64. }
  65. System.out.println(maxSizeStack - 1);
  66. for (int i = 0; i < num; i++) {
  67. if (i == num - 1) System.out.println(m[i]);
  68. else System.out.print(m[i] + " ");
  69. }
  70.  
  71. }
  72. }
  73.  
  74.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement