大佬求调
查看原帖
大佬求调
836104
cxlian25楼主2023/1/16 12:27
#include <bits/stdc++.h>
using namespace std;
int n,a[103],f[103];
int main(){
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        scanf("%d",&a[i]);
    }
    int ans=100;
    for(int i=1;i<=n;i++){
        int len=1,sum=0;
        f[1]=a[1];
        for(int j=2;j<=i;j++){
        	if(a[j]>=a[i]&&j!=i)continue;//保证i这个人最高 
            if(a[j]>f[len])f[++len]=a[j];
            else{
                int l=1,r=len;
                while(l<=r){
                    int mid=l+r>>1;
                    if(f[mid]<a[j])l=mid+1;
                    else r=mid-1;
                }
                f[r+1]=min(f[r+1],a[j]);
            }
        }
        sum+=len;
        len=1;
        f[len]=a[i];
        for(int j=i+1;j<=n;j++){
        	if(a[j]>=a[i])continue;//保证i这个人最高 
            if(a[j]<f[len])f[++len]=a[j];
            else{
                int l=i,r=len;
                while(l<=r){
                    int mid=l+r>>1;
                    if(f[mid]>a[j])l=mid+1;
                    else r=mid-1;
                }
                f[r+1]=max(f[r+1],a[j]);
            }
        }
        sum+=len;
        ans=min(ans,n-sum+1);
    }
    printf("%d",ans);
    return 0;
}
2023/1/16 12:27
加载中...