import sys
from bisect import bisect_left
N = int(sys.stdin.readline())
data = list(map(int, sys.stdin.readline().split()))
check = [0]
temp = [data[0]]
for i in range(1, N):
x = data[i]
if temp[-1] < x:
temp.append(x)
check.append(len(temp) - 1)
else:
idx = bisect_left(temp, x)
temp[idx] = x
check.append(idx)
print(len(temp))
cnt = max(check)
answer = ''
for i in range(N-1, -1, -1):
if check[i] == cnt:
answer = str(data[i]) + ' ' + answer
cnt -= 1
print(answer)
'파이썬 코테 준비' 카테고리의 다른 글
[백준 1450] 냅색문제 - Python(파이썬) (0) | 2021.04.03 |
---|---|
[백준 9252] LCS 2 - Python(파이썬) (0) | 2021.04.03 |
[백준 14002] 가장 긴 증가하는 부분 수열 4 - Python(파이썬) (0) | 2021.04.03 |
[백준 1644] 소수의 연속합 - Python(파이썬) (0) | 2021.04.03 |
[백준 1806] 부분합 - Python(파이썬) (0) | 2021.03.31 |
댓글