#include <iostream> #include <algorithm> using namespace std; const int N = 3030; int h[N]; int f[N], z[N]; // f存储递增子序列长度,z存储递减子序列长度 int main() { int n; cin >> n; for (int i = 0; i < n; i++) { f[i] = 1; z[i] = 1; } for (int i = 0; i < n; i++) { cin >> h[i]; } // 计算f数组:从左到右的最长递增子序列 for (int i = 0; i < n; i++) { for (int j = 0; j < i; j++) { if (h[i] > h[j]) { f[i] = max(f[i], f[j] + 1); } } } // 计算z数组:从右到左的最长递减子序列(即逆序的最长递增) for (int i = n - 1; i >= 0; i--) { for (int j = i + 1; j < n; j++) { if (h[i] > h[j]) { z[i] = max(z[i], z[j] + 1); } } } int ans = 0; for (int i = 0; i < n; ++i) { ans = max(ans, f[i] + z[i] - 1); // 减去重复计算的当前元素 } cout << n-ans << endl; return 0; }