记录编号 616313 评测结果 AAAAAAAAAA
题目名称 [NOIP 2004]合唱队形 最终得分 100
用户昵称 Gravatar终焉折枝 是否通过 通过
代码语言 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;
}