rt,第9个点过不去,答案76输出75
#include <iostream>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <stack>
using namespace std;
typedef long long ll;
const ll MAXN=3000+5;
ll dp[MAXN],n,a[MAXN];
ll shang_sheng(ll e) {
if(e==0){
return 0;
}
for (int i = 0; i <=n ; ++i) {
dp[i]=0;
}
ll ans = -1;
for (int i = 1; i <= e; i++) {
dp[i] = 1;
for (int j = 1; j < i; j++) {
if (a[j] < a[i]) {
dp[i] = max(dp[i], dp[j] + 1);
}
}
ans = max(ans, dp[i]);
}
return ans;
}
ll xia_jiang(ll s){
if(s==n){
return 0;
}
for (int i = 0; i <=n ; ++i) {
dp[i]=0;
}
ll Ans=1;
dp[s]=a[s];
for(ll i=s;i<=n;++i){
if(dp[Ans]>a[i]){
Ans++;
dp[Ans]=a[i];
}else{
for (int j = 1; true ; ++j) {
if(dp[j]<a[i]){
dp[j]=a[i];
break;
}
}
}
}
return Ans;
}
int main(){
cin>>n;
for (int i = 1; i <=n ; ++i) {
cin>>a[i];
}
ll ans=0;
for (int i = 1; i <=n ; ++i) {
ll l= shang_sheng(i-1),r= xia_jiang(i+1);
ans= max(l+r,ans);
}
cout<<n-ans;
return 0;
}