#include <iostream>
#include <algorithm>
using namespace std;
const int MAX = 40001;
int n;
int line[MAX];
int cache[MAX];
int maxline() {
cache[0] = line[1];
int size = 0;
for (int i = 2; i <= n; i++) {
if (cache[size] < line[i])
cache[++size] = line[i];
else {
int index = lower_bound(cache, cache + size, line[i]) - cache;
cache[index] = line[i];
}
}
return size+1;
}
int main(void) {
cin >> n;
for (int i = 1; i <= n; i++)
cin >> line[i];
cout << maxline() << endl;
}
'백준 알고리즘 > 다이나믹 프로그래밍' 카테고리의 다른 글
백준 11054번 C++ (0) | 2019.08.24 |
---|---|
백준 10942번 C++ (0) | 2019.08.23 |
백준 5582번 C++ (0) | 2019.08.22 |
백준 2240번 C++ (0) | 2019.08.22 |
백준 11052번 C++ (0) | 2019.08.21 |