lls nlogn

fill(len,len + maxn,INF);
    len[0] = 0;
    int ans = 0;
    REP(i,n){
        //cout<<A[i]<<' ';
        int L = 0,R = ans;
        while (L < R){
            int mid = (L + R + 1) >> 1;
            if (len[mid] < A[i]) L = mid;
            else R = mid - 1;
        }
        f[i] = L + 1;
        len[f[i]] = min(len[f[i]],A[i]);
        ans = max(ans,f[i]);
    }
    cout<<ans<<endl;

 

posted @ 2020-09-17 16:54  jvruodejxt  阅读(109)  评论(0编辑  收藏  举报

Contact with me