// #牛客春招刷题训练营# https://www.nowcoder.com/discuss/726480854079250432 // 思路:左边前缀最长递增,右边后缀最长递减,然后枚举每个点找出最大的递增+递减-1;(思路来自题解) // 题目看错了,我以为最高的要在中间 #include <iostream> #include <vector> using namespace std; vector<int> abc(1010, 1), cba(1010, 1), a(1010);//------abc记录递增,cba记录递减,a记录输入 int main() { ios_base::sync_with_stdio(false),cin.tie(0),cout.tie(0); int n; cin >> n; cin >> a[0]; for (int i = 1; i < n; i++){//--------输入,同时维护abc cin >> a[i]; for (int j = 0; j < i; j++){ if (a[j] < a[i]) abc[i] = max(abc[i], abc[j] + 1); } } for (int i = n - 1; i >= 0; i--){//-----------处理cba for (int j = n - 1; j > i; j--){ if (a[j] < a[i]) cba[i] = max(cba[i], cba[j] + 1); } } int ans = 0; for (int i = 0; i < n; i++){//----------枚举 ans = max(abc[i] + cba[i] - 1, ans); } cout << n - ans;//------------记得题目要的是最少出列几个人,要用n减 } // 64 位输出请用 printf("%lld")