【codevs3955】最长严格上升子序列(加强版)

//f[i]:长为i的LIS末位的最小值
#include
#include
#include
using namespace std;
int f[1000010];
int main(){
    memset(f,0x3f,sizeof(f));
    int n;  cin>>n;
    for(int i = 1; i <= n; i++){
        int x;  cin>>x;
        *lower_bound(f+1,f+n+1,x) = x;
    }
    cout<1,f+n+1,f[0])-f-1<<"\n";
    return 0;
}

你可能感兴趣的:(算法)