
package Gold_5;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
import java.util.StringTokenizer;
public class Top {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
StringTokenizer st = new StringTokenizer(br.readLine());
Stack<int[]> stack = new Stack<>();
// 백준 2493
// 예제 입력: 6 9 5 7 4
for(int i = 1; i <= n; i++) {
int top = Integer.parseInt(st.nextToken()); // 현재 탑의 높이
while(!stack.isEmpty()) {
if(stack.peek()[1] >= top) { // 스택의 탑이 현재 탑보다 크거나 같으면
System.out.print(stack.peek()[0] + " "); // 신호를 수신할 수 있는 탑의 번호 출력
break;
}
stack.pop(); // 현재 탑보다 작은 탑들은 팝
}
if(stack.isEmpty()) {
System.out.print("0 "); // 수신할 수 있는 탑이 없으면 0 출력
}
stack.push(new int[] {i, top}); // 현재 탑을 스택에 푸시
}
}
}
5
6 9 5 7 4
[[1, 6]][[2, 9]][[2, 9], [3, 5]][[2, 9], [4, 7]][[2, 9], [4, 7], [5, 4]]0 0 2 2 4