| 比赛 |
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;
}