tijie
2023-08-19 16:30:24
发布于:广东
2阅读
0回复
0点赞
#include<iostream>
#include<algorithm>
using namespace std;
const int N=1e5+10;
const int INF=0x3f3f3f3f;
int n,a[N],dp[N],len=1,dp1[NULL],lenn=1;
int main(){
while(cin>>a[++n]);
n--;
dp[1]=dp1[1]=a[1];
for(int i=2;i<=n;i++){
if(a[i]<=dp[len]) dp[++len]=a[i];
else{
int pos=upper_bound(dp+1,dp+1+len,a[i],greater<int>())-dp;
dp[pos]=a[i];
}if(a[i]>dp1[lenn]){
dp1[++lenn]=a[i];
}else{
int pos=lower_bound(dp1+1,dp1+lenn+1,a[i])-dp1;
dp1[pos]=a[i];
}
}
cout<<len<<endl<<lenn;
return 0;
}
这里空空如也
有帮助,赞一个