题解 | #合唱队#
合唱队
https://www.nowcoder.com/practice/6d9d69e3898f45169a441632b325c7b4
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> heights(n);
for (int i=0; i<n; i++) {
cin >> heights[i];
}
vector<int> left(n,1);
vector<int> right(n,1);
for(int i=1;i<n;i++){
for (int j=0; j<i; j++) {
if(heights[i] > heights[j]){
left[i] = max(left[i], left[j] + 1);
}
}
}
for(int i = n-2; i>=0 ; i--){
for (int j=n-1; j>i; j--) {
if(heights[i] > heights[j]){
right[i] = max(right[i], right[j]+1);
}
}
}
int max_len = 0;
for(int i=0;i<n;i++){
max_len = max(max_len, left[i]+right[i]-1);
}
cout << n - max_len <<endl;
}
// 64 位输出请用 printf("%lld")
