BOJ 17298大数


https://www.acmicpc.net/problem/17298
1秒、512 MBメモリ
input :
  • N (1 ≤ N ≤ 1,000,000)
  • 数列Aの要素A 1、A 2、…、AN (1 ≤ Ai ≤ 1,000,000)
  • output :
  • 共N個のNGE(1)、NGE(2)、…、NGE(N)出力
  • をスペースで区切る
    条件:
  • Aiの最大値は右側であり、Aiより大きい数のうち最も左を示す数は
  • である.
    BOJ 2493タワー問題の反対方向からの場合と同じです.
    n-1から0に移行し、temp instackを確認するように行います.
    import sys
    
    n = int(sys.stdin.readline())
    data = list(map(int, sys.stdin.readline().split()))
    temp = [0]
    # 마지막에 reverse 해주기
    ans = []
    
    for i in range(n - 1, -1, -1):
        num = data[i]
        flag = 0
    
        while temp:
            compare = temp.pop()
    
            if num < compare:
                flag = 1
                ans.append(compare)
                temp.append(compare)
                break
    
        if not flag:
            ans.append(-1)
        temp.append(num)
    
    ans.reverse()
    for item in ans:
        print(item, end=" ")