
이전 문제와 동일하게 가장 긴 증가하는 부분수열을 구하는 문제이다. LIS를 구하는 NlogN의 알고리즘을 그대로 적용해주면 된다.
#include <iostream>
#include <vector>
void Init()
{
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
std::cout.tie(nullptr);
}
int main()
{
Init();
int NumPort = 0;
std::cin >> NumPort;
std::vector<int> Link(NumPort);
for (int i = 0; i < NumPort; i++)
{
std::cin >> Link[i];
}
std::vector<int> LIS;
LIS.reserve(NumPort);
for (int i = 0; i < Link.size(); i++)
{
auto Iter = std::upper_bound(LIS.begin(), LIS.end(), Link[i]);
if (Iter == LIS.end())
{
LIS.push_back(Link[i]);
}
else
{
*Iter = Link[i];
}
}
std::cout << LIS.size();
return 0;
}
'매일매일 코테풀기 (일시 중단!)' 카테고리의 다른 글
(2024-10-31) 4 문제 : 백준 - 21940 (가운데에서 만나기) (0) | 2024.10.31 |
---|---|
(2024-10-31) 3 문제 : 백준 - 23059 (리그 오브 레게노) (0) | 2024.10.31 |
(2024-10-31) 1 문제 : 백준 - 1818 (책 정리) (0) | 2024.10.31 |
(2024-10-30) 2 문제 : 백준 - 2812 (크게 만들기) (0) | 2024.10.30 |
(2024-10-30) 1 문제 : 백준 - 13160 (최대 클리크 구하기) (0) | 2024.10.30 |