# 가장 긴 증가하는 부분 수열
import sys
def find(x):
l = 0
r = len(result)-1
while l<r:
mid = (l+r)//2
if result[mid]<x:
l = mid + 1
elif result[mid]>x:
r = mid
else:
l = mid
r = mid
result[l]=x
return
try:
while True:
N = int(sys.stdin.readline())
P = list(map(int, sys.stdin.readline().split()))
result = [0]
for i in range(N):
if result[-1]<P[i]:
result.append(P[i])
else:
find(P[i])
print(len(result)-1)
except ValueError:
sys.exit()
'알고리즘' 카테고리의 다른 글
[백준] 1508번 레이스 (0) | 2023.07.10 |
---|---|
[백준] 1826번 연료채우기 (0) | 2023.07.10 |
[누적합] 백준 3020 개똥벌레 (0) | 2022.03.20 |
[dijkstra] 백준 11779 최소비용 구하기2(다익스트라 + 경로 노드) (0) | 2022.03.19 |
[dijkstra] 백준 10282 해킹 (0) | 2022.03.17 |
댓글