PS
[C++] 12738 : 가장 긴 증가하는 부분 수열 3
왕방토
2021. 2. 12. 23:38
728x90
골드 Ⅱ
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int n;
scanf("%d", &n);
int s;
scanf("%d", &s);
vector <int> subsq;
subsq.push_back(s);
int idx;
for (int i = 1; i < n; i++) {
scanf("%d", &s);
if (subsq.back() < s) {
subsq.push_back(s);
}
else {
idx = lower_bound(subsq.begin(),subsq.end(), s) - subsq.begin();
subsq[idx] = s;
}
}
printf("%d", subsq.size());
}
LIS 알고리즘 (nlogn, LIS의 길이만 출력)
가장 긴 증가하는 부분 수열 2 문제와 완전히 동일한 코드
가장 긴 증가하는 부분 수열 2 와 다른 조건은
주어지는 seq들이 음수일 수도 있다는 것
가장 긴 증가하는 부분 수열 2에서 구현한 로직에서 문제가 되는 부분이 아니므로 그대로 제출함