import sys
In = sys.stdin.readline
from bisect import bisect_left
n=int(In())
arr = list(map(int, In().split()))
index = [0] * n
dp = [arr[0]]
for i in arr:
if dp[-1]
dp += [i]
else:
dp[bisect_left(dp,i)] = i
print(len(dp))
--------------------------------------------------------------
import sys
In = sys.stdin.readline
n = int(In())
arr = list(map(int, In().split()))
dp = [arr[0]]
for i in arr:
if dp[-1]
dp += [i]
else:
lo,hi = 0, len(dp)
while lo
mid = (lo+hi)//2
if dp[mid]
else: hi = mid
dp[lo] = i
print(len(dp))
---------------------------------------------------------------
LIS 알고리즘인데 위에꺼는 100만개 기준으로 0.9초 걸리고
아래꺼는 3.6초 걸려
위랑 아래랑 똑같이 이진 탐색하는건데
왜 함수 호출 안하는 게 하는 것보다 느린지 이해가 안 돼
파이썬은 반복문이 함수안에 있는게 더 빠름
단순 for문 천만번을 그냥 도는거하고 def loop(n)으로 새로 정의해서 도는거하고 직접비교해보셈
앞으로 요긴하게 쓸듯 ㄳㄳㄳ
그래서 pypy 에다가 저거 이용하면 c랑 사실상 속도차이 거의없음
아마 파이썬이 인터프리터 언어라서 그냥 직접 짠 건 한 줄 한 줄 실행되지만 보통 내장함수들은 거의 C로 구현이 돼있음 그래서 더 빠른 거인 듯