Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
140519 | 吴悠 | 最长不下降子序列 | C++ | 通过 | 100 | 21 MS | 1028 KB | 459 | 2024-03-30 15:44:59 |
#include<iostream> using namespace std; int id=0,a[100001],f[100001]; int ff(int n){ int l=1,r=id,ans=0; while(l<=r){ int mid=(l+r)/2; if(n<f[mid]){ r=mid-1; ans=mid; } else l=mid+1; } return ans; } int main(){ int n; cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; f[i]=1; } for(int i=1;i<=n;i++){ if(a[i]>=f[id]){ f[id+1]=a[i]; id++; } else f[ff(a[i])]=a[i]; } cout<<id<<endl; return 0; }