Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
140336 | 林泽豪 | 导弹拦截 | C++ | 通过 | 100 | 35 MS | 308 KB | 472 | 2024-03-30 14:30:47 |
#include<bits/stdc++.h> using namespace std; const int N=110000; int w[N],f[N],p[N],ps=0,maxn=0,n; int main(){ while(cin>>w[++n]){ int s=1;bool k=0; f[n]=1; for(int i=1;i<=ps;i++){ if(p[i]>=w[n]&&(!k||(p[i]<p[s]&&k))){ k=1; s=i; } } if(k) p[s]=w[n]; else p[++ps]=w[n]; } for(int i=n-1;i>=1;i--){ for(int j=n;j>i;j--){ if(w[i]>=w[j])f[i]=max(f[i],f[j]+1); maxn=max(maxn,f[i]); } } cout<<maxn<<endl<<ps; }