1081: 最长上升子序列Ⅱ

#include <bits/stdc++.h>
using namespace std;
const int N=1e6+10;
int num[N];
int n;
int main(){
	while(scanf("%d",&n)!=EOF){
		for(int i=1;i<=n;i++){
			scanf("%d",&num[i]);

		}
		vector<int> len;
		len.push_back(INT_MIN);

		for(int i=1;i<=n;i++){
			int l=len.size();
			auto find=lower_bound(len.begin(),len.end(),num[i]);
			if(find!=len.end())
				len[find-len.begin()]=num[i];
			else{
				len.push_back(num[i]);
			}
		}
		printf("%d\n",len.size()-1);
	}
}
posted @ 2026-03-26 17:06  peter_shen  阅读(8)  评论(0)    收藏  举报