| 记录编号 |
616313 |
评测结果 |
AAAAAAAAAA |
| 题目名称 |
[NOIP 2004]合唱队形 |
最终得分 |
100 |
| 用户昵称 |
终焉折枝 |
是否通过 |
通过 |
| 代码语言 |
C++ |
运行时间 |
0.028 s |
| 提交时间 |
2026-06-12 09:27:56 |
内存使用 |
3.71 MiB |
显示代码纯文本
#include<iostream>
#include<algorithm>
#include<set>
#include<map>
#include<unordered_map>
#include<cmath>
#include<queue>
#include<stack>
#include<vector>
#include<stdio.h>
#include<stdlib.h>
#include<string>
#include<typeinfo>
#define ll long long
#define ull usigned long long
using namespace std;
namespace M{
template<typename T>
inline T min(T a, T b){return a < b ? a : b;}
template<typename T>
inline T max(T a, T b){return a > b ? a : b;}
template<typename T>
inline T abs(T x){return x < 0 ? -x : x; }
template<typename T>
inline void swap(T &a, T &b){T x = a; a = b, b = x;}
template<typename T>
inline void Gmin(T &a, T b){a = b < a ? b : a; }
template<typename T>
inline void Gmax(T &a, T b){a = b > a ? b : a; }
template<typename T>
inline T gcd(T a, T b){return b == 0 ? a : gcd(b, a % b);}
template<typename T>
inline T lcm(T a, T b){return (a / gcd(a, b)) * b;}
template<typename T>
inline T pow(T x, T n){
T res = 1;
while(n){
if(n & 1) res = res * x;
n >>= 1; x = x * x;
}
return res;
}
template<typename T>
inline T pow(T x, T n, const T Mode){
T res = 1;
while(n){
if(n & 1) res = (res * x) % Mode;
n >>= 1;
x = (x * x) % Mode;
}
return res % Mode;
}
}
const int N = 105;
int n;
int h[N];
int f[N];
int g[N];
int a1[N], a2[N];
int main(){
cin >> n;
for(int i = 1;i <= n;i ++){
cin >> h[i];
}
int len = 0;
for(int i = 1;i <= n;i ++){
int pos = lower_bound(f + 1, f + len + 1, h[i]) - f;
f[pos] = h[i];
M::Gmax(len, pos);
a1[i] = pos;
}
len = 0;
for(int i = n;i >= 1;i --){
int pos = lower_bound(g + 1, g + len + 1, h[i]) - g;
g[pos] = h[i];
M::Gmax(len, pos);
a2[i] = pos;
}
int ans = 1e9;
for(int i = 1;i <= n;i ++){
M::Gmin(ans, n - a1[i] - a2[i] + 1);
}
cout << ans << '\n';
return 0;
}