오큰수


Define input, output

  • Input: Array $$<a_{1}, a_{2}, … ,a_{n}>$$
  • Output:
    • Array :
    • $$<a’{1}, a’{2}, … ,a’_{n}>$$
    • $$b_{i} = max(a’{i+1}, a’{i+2}, …, a’_{n})$$
    • $$a’{i} = \text{if } b{i} > a_{i} \text{ then } b_{i} \text{ else }-1$$

source code

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
import sys


N = int(sys.stdin.readline())
array = list(map(int, sys.stdin.readline().strip().split(" ")))
stack = []
answer = [-1] * N
for i, val in enumerate(array):
    while stack and array[stack[-1]] < val:
        answer[stack.pop()] = val
    stack.append(i)

print(*answer)
Built with Hugo
Theme Stack designed by Jimmy