比赛 2026.8.26 评测结果 AAAAAAAAAAAAAAAWWWWWWWWWW
题目名称 sort 最终得分 60
用户昵称 dream 运行时间 0.974 s
代码语言 C++ 内存使用 5.71 MiB
提交时间 2026-08-26 11:07:49
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=2000005;
int n;
int a[N],b[N];
ll ans;
int main(){
    freopen("sorttros.in","r",stdin);
    freopen("sorttros.out","w",stdout);
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        b[i]=a[i];
    }
    if(n<=400){
    	for(int i=1;i<=n;i++){
    		for(int j=1;j<=n-i;j++){
    			if(b[j]!=(n-i+1)&&b[j+1]!=(n-i+1)){
    				ans++;
    				break;
				}
				if(b[j]>b[j+1]) swap(b[j],b[j+1]);
 			}
			if(ans) break;
		}
        for(int i=n;i>=1;i--){
	        int mx=0,mid=0;
	        for(int j=1;j<=i;j++){
	            if(a[j]==i){
	                mid=j;
	                break;
	            }
	            else{
	                mx=max(mx,a[j]);
	            }
	        }
	        int sum=0,nmx=0;
	        for(int j=i;j>=mid+1;j--){
				if(a[j]>nmx){
					sum++;
					nmx=a[j];
				}
	        }
	        if(mx>nmx){
	        	sum++;
			}
	        ans+=sum;
	        int nn=n-i+1;
	        for(int j=1;j<=n-nn;j++){
	        	if(a[j]>a[j+1]) swap(a[j],a[j+1]);
			}
	    }    
    }
    else{
    	ans=n*1ll*(n-1ll)/2; 
	}
	cout<<ans;
    return 0;
}