原文链接:https://www.luogu.com.cn/problem/P1091
AC代码:
#include<iostream>
#include<string.h>
#include<vector>
#include<math.h>
#include<algorithm>
using namespace std;
int n;
vector<int> vec;
int dp0[105],dp1[105];
void deal(){
int i,j,maxn=1000;
for(i=0;i<n;i++){
dp0[i]=1;
for(j=i-1;j>=0;j--){
if(vec[i]>vec[j]){
dp0[i]=max(dp0[i],dp0[j]+1);
}
}
}
for(i=n-1;i>=0;i--){
dp1[i]=1;
for(j=i+1;j<n;j++){
if(vec[i]>vec[j]){
dp1[i]=max(dp1[i],dp1[j]+1);
}
}
}
for(i=0;i<n;i++){
maxn=min(maxn,i+1-dp0[i]+n-i-dp1[i]);
}
cout<<maxn<<endl;
}
int main(){
int i,j;
cin>>n;
for(i=0;i<n;i++){
cin>>j;
vec.push_back(j);
}
memset(dp0,0,sizeof(dp0));
memset(dp1,0,sizeof(dp1));
deal();
return 0;
}