간단한 해설?
문제 양치기를 너무 많이해서 그런가 문제만 봐도 그냥 단순한 LIS임이 명백했다.(전깃줄 문제랑 비슷해보임)
lower_bound를 통해 이분탐색으로 풀었다.
답
#include <iostream>
#include <vector>
#include <deque>
#include <algorithm>
using namespace std;
int main(){
cin.tie(0);
ios_base::sync_with_stdio(0);
int n,a;
cin>>n;
deque<int> v;
cin>>a;
v.push_back(a);
int ans=0;
for(int i=1;i<n;++i){
cin>>a;
auto it=lower_bound(v.begin(),v.end(),a);
if(it==v.end()){
v.push_back(a);
}
else{
++ans;
v[it-v.begin()]=a;
}
}
cout<<ans;
}
'알고리즘 > 백준' 카테고리의 다른 글
백준 30023 전구 상태 바꾸기 C++ (2) | 2024.06.18 |
---|---|
백준 2247 실질적 약수 C++ (0) | 2024.06.12 |
백준 15824 너 봄에는 캡사이신이 맛있단다 C++ (0) | 2024.05.09 |
백준 16437 양 구출 작전 C++ (0) | 2024.05.02 |
백준 24391 귀찮은 해강이 C++ (0) | 2024.04.29 |