풀이
"백준 12015, 가장 긴 증가하는 부분 수열 2"와 푸는 방식이 동일한 문제이다.
소스코드
#include <stdio.h>
int dp[1000001] = {1000001};
int main(){
int N;
scanf("%d", &N);
int val, back = 0;
for(int i = 0; i < N; i++){
scanf("%d", &val);
if(val > dp[back]) dp[++back] = val;
else{
int left = 0, right = back, mid, idx;
while(left <= right){
mid = (left+right) / 2;
if (dp[mid] >= val) right = (idx = mid) -1;
else left = mid + 1;
}
dp[idx] = val;
}
}
printf("%d", back + 1);
}
출처 및 참고자료
'PS > Baekjoon Online Judge' 카테고리의 다른 글
[백준 11050] 이항 계수 1 [C] (0) | 2022.04.03 |
---|---|
[백준 1002] 터렛 [C] (0) | 2022.04.03 |
[백준 10800] 컬러볼 [C] (0) | 2021.09.05 |
[백준 1377] 버블 소트 [C] (0) | 2021.09.05 |
[백준 17404] RGB거리 2 [C] (0) | 2021.09.05 |