Files

27 lines
695 B
Python

def solve(N, A):
stack_i = []
stack_v = []
t = [-1] * N
for i in range(N):
if not stack_v:
stack_v.append(A[i])
stack_i.append(i)
else:
if A[i] > stack_v[-1]:
for j in range(len(stack_v) - 1, -1, -1):
if stack_v[j] < A[i]:
t[stack_i[j]] = A[i]
stack_v.pop()
stack_i.pop()
else:
break
stack_v.append(A[i])
stack_i.append(i)
return " ".join(map(str, t))
if __name__ == '__main__':
print(solve(int(input()), list(map(int, input().split()))))