最长不下降子序列

发布时间 2023-12-14 03:30:04作者: JMXZ
/*

*/
/*

*/
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<string.h>
#include<queue>
#include<vector>
#include<bits/stdc++.h>
typedef long long ll;
#define ddd printf("-----------------------\n");
using namespace std;
const int maxn=1e1 +10;
const int mod=998244353;
const int inf=0x3f3f3f3f;

int a[maxn],b[maxn],n;//吧b[i] 长度为i的序列 结尾中 最小的值

int main()
{
    ios::sync_with_stdio(false);
    cin>>n;
    for(int i=1;i<=n;i++) cin>>a[i];
    int len=0;
    for(int i=1;i<=n;i++){
        if(a[i]>b[len]) b[++len]=a[i];
        else{
            int pos=upper_bound(b+1,b+1+len,b[i])-b;
            b[pos]=a[i];
        }
    }
    cout<<len<<'\n';
    
    return 0;
}