比赛 2026.8.26 评测结果 AAAAAAAAAAAAAAAAAAAAAAAAA
题目名称 sort 最终得分 100
用户昵称 运行时间 0.863 s
代码语言 C++ 内存使用 9.73 MiB
提交时间 2026-08-26 10:32:56
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define INT_MAX (int)(1e18)

const int N=2e6+10;

int n;
int a[N],p[N],w[N];

inline int read(){
    int t=0,f=1;
    register char c=getchar();
    while(c<'0'||c>'9') f=(c=='-')?(-1):(f),c=getchar();
    while(c>='0'&&c<='9') t=(t<<3)+(t<<1)+(c^48),c=getchar();
    return t*f;
}

signed main(){
    freopen("sorttros.in","r",stdin);
    freopen("sorttros.out","w",stdout);
    n=read();
    for(int i=1;i<=n;i++) a[i]=read(),p[a[i]]=i;
    int ans=0;
    int min1=INT_MAX,min2=INT_MAX;
    for(int i=1;i<=n;i++){
        if(a[i]>min2){ans++;break;}
        if(a[i]<min1) min2=min1,min1=a[i];
        else min2=a[i];
    }
    int flag=p[n];w[n]=p[n];
    for(int i=n-1;i>=1;i--){
        if(p[i]<flag) ans++;
        else flag=p[i];
        w[i]=flag;
    }
    int res=0;
    for(int i=2;i<=n;i++){
        if(w[i]!=w[i-1]) res++;
        ans+=res;
    }
    cout<<ans<<"\n";
    return 0;
}