Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.LinkedList;
- import java.util.Scanner;
- public class JumpTwo {
- public static void main(String[] args) {
- Scanner s = new Scanner(System.in);
- int num = Integer.parseInt(s.nextLine());
- int[] n = new int[num];
- int[] m = new int[num];
- String[] str = s.nextLine().split(" ");
- for (int i = 0; i < num; i++) {
- n[i] = Integer.parseInt(str[i]);
- }
- LinkedList stack = new LinkedList<>();
- int maxSizeStack = 0;
- stack.add(n[num - 1]);
- m[num - 1] = 0;
- for (int i = num - 2, k = num - 2; i >= 0; i--) {
- if (n[i] < (int) stack.get(0)) {
- stack.offerFirst(n[i]);
- if (stack.size() > maxSizeStack) maxSizeStack = stack.size();
- m[k] = stack.size() - 1;
- k--;
- continue;
- }
- for (int j = 0; j < stack.size(); j++) {
- if (n[i] >= (int) stack.getLast()) {
- stack.clear();
- stack.add(n[i]);
- if (stack.size() > maxSizeStack) maxSizeStack = stack.size();
- k--;
- break;
- }
- if (n[i] > (int) stack.get(j)) {
- if (stack.size() > maxSizeStack) maxSizeStack = stack.size();
- stack.remove(j);
- j--;
- } else if (n[i] < (int) stack.get(j)) {
- stack.offerFirst(n[i]);
- m[k] = stack.size() - 1;
- k--;
- break;
- } else {
- if (stack.size() > maxSizeStack) maxSizeStack = stack.size();
- m[k] = stack.size() - 1;
- k--;
- break;
- }
- }
- }
- System.out.println(maxSizeStack - 1);
- for (int i = 0; i < num; i++) {
- if (i == num - 1) System.out.println(m[i]);
- else System.out.print(m[i] + " ");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement