52分求调
查看原帖
52分求调
1286360
Hbh1617楼主2025/7/26 19:14

回答必关

#include<bits/stdc++.h>
using namespace std;
int n,ans1,ans2;
int a[50010];
int f[50010],dp[50010];
int main(){
    cin>>n;
    for(n=1;cin>>a[n];n++){
    	dp[n]=f[n]=1;
    }
    for(int i=1;i<=n;i++){
    	for(int j=1;j<i;j++){
    		if(a[j]>=a[i])dp[i]=max(dp[i],dp[j]+1);
		}
		ans1=max(ans1,dp[i]);
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<i;j++){
			if(a[j]<a[i])f[i]=max(f[i],f[j]+1);
		}
		ans2=max(ans2,f[i]);
	}
	cout<<ans1<<"\n"<<ans2;
    return 0;
}  
2025/7/26 19:14
加载中...