본문 바로가기
백준 알고리즘/다이나믹 프로그래밍

백준 2352번 C++

by paysmile 2019. 8. 23.

#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