题解 | 合唱队
合唱队
https://www.nowcoder.com/practice/6d9d69e3898f45169a441632b325c7b4
#include <iostream>
using namespace std;
#include<vector>
int main() {
int n;
int m;
cin>>n;
vector<int>a;
vector<int>dp(n);
vector<int>dp2(n);
while(cin>>m){
a.push_back(m);
}
for(int i=0;i<n;i++){
dp[i]=1;
for(int j=0;j<i;j++){
if(a[i]>a[j]&&dp[i]<dp[j]+1){
dp[i]=dp[j]+1;
}
}
}
for(int i=n-1;i>=0;i--){
dp2[i]=1;
for(int j=n-1;j>i;j--){
if(a[i]>a[j]&&dp2[i]<dp2[j]+1){
dp2[i]=dp2[j]+1;
}
}
}
int max=1;
vector<int>dp3(n);
for(int i=0;i<n;i++){
dp3[i]=dp[i]+dp2[i]-1;
if(max<dp3[i]){
max=dp3[i];
}
}
cout<<n-max<<endl;
//for(auto x:dp)cout<<x<<' ';
//for(auto x:dp2)cout<<x<<' ';
//for(auto x:dp3)cout<<x<<' ';
}
// 64 位输出请用 printf("%lld")
