#include <iostream>
#include <vector>
using namespace std;
vector<int> LTS(vector<int>& nums){
int n = nums.size();
vector<int> dp(n,1);
for(int i = 1; i < n; i++){
for(int j = 0; j < i; j++){
if(nums[j] < nums[i]){
dp[i] = max(dp[j] + 1, dp[i]);
}
}
}
return dp;
}
int main() {
int n;
while (cin >> n) { // 注意 while 处理多个 case
vector<int> nums1(n), nums2(n);
for (int i = 0, j = n - 1; i < n && j >= 0; i++, j--) {
cin >> nums1[i];
nums2[j] = nums1[i];
}
auto dp1 = LTS(nums1);
auto dp2 = LTS(nums2);
int maxLen = 0;
for(int i = 0, j = n - 1;i < n && j >=0; i++,j--){
maxLen = max(maxLen, dp1[i] + dp2[j] - 1);
}
cout << n - maxLen << endl;
}
}
// 64 位输出请用 printf("%lld")
// 0 1 2 3 4
// 186 186 150 200 160 130 197 200
// 0 1 2 2 3 5 4
最长上升子序列



京公网安备 11010502036488号