https://www.acmicpc.net/problem/2493
순회를 돌면서 스택에 인덱스와 탑의 높이를 튜플로 저장
스택에 있는 탑들의 높이를 현재 탑의 높이와 비교
-> 현재 탑보다 작은 이전 탑들에서는 신호를 수신을 받을 수 없으므로 스택에서 제거
-> 현재 탑보다 크거나 같은 탑은 현재 탑에서의 신호를 수신 받을 수 있으므로 수신받는 탑의 인덱스+1을 정답에 저장
import sys
input = sys.stdin.readline
n = int(input())
tops = list(map(int,input().split()))
answer= [0] * n
stack = []
#가장 먼저 만나는 높이가 같거나 큰 탑에서 수신가능
for i in range(len(tops)):
while stack:
if tops[stack[-1][0]]<tops[i]:
stack.pop()
else:
answer[i] = stack[-1][0]+1
break
stack.append((i,tops[i]))
print(*answer)