import sys
input = sys.stdin.readline
n = int(input())
arr = list(map(int, input().split()))
stack = [[0, arr[0]]]
ans = [0] * n
for i in range(1,n):
while stack:
if stack[-1][1] < arr[i]:
ans[stack.pop()[0]] = arr[i]
else:
break
stack.append((i, arr[i]))
for idx, val in stack: # 남은 스택 정리 (오큰수가 없으므로)
ans[idx] = -1
print(*ans)
다른분들의 풀이를 보니 값은 필요없고 인덱스만 기록하면 되는거 였다.
그리고 ans의 기본값을 -1로 지정하면 남은 스택을 -1로 바꾸는 과정을 생략해도 된다.