记录编号 602335 评测结果 AAAAAAAAAA
题目名称 4166.遵循指令之意 最终得分 100
用户昵称 Gravatar二乾五 是否通过 通过
代码语言 C++ 运行时间 2.406 s
提交时间 2025-07-03 16:35:11 内存使用 11.37 MiB
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;

#define ll long long
#define cl(a) memset(a,0,sizeof a)
#define copy(a,b) copy(begin(a),end(a),begin(b))
#define ld long double
#define dot(x) fixed<<setprecision(x)
#define foru(a,b,c) for(ll a=b;a<=c;a++)

ll n,a[1000005],b[500005],c[500005],t[500005],bcnt,ccnt,ans,ans2;

void binarysortb(ll l,ll r){
    if(l>=r){
        return;
    }
    ll mid=(l+r)>>1;
    binarysortb(l,mid);
    binarysortb(mid+1,r);
    ll i=l,j=mid+1,k=l;
    while(i<=mid&&j<=r){
        if(b[i]<=b[j]){
            t[k++]=b[i++];
        }else{
            t[k++]=b[j++];
            ans+=mid-i+1;
        }
    }
    while(i<=mid){
        t[k++]=b[i++];
    }
    while(j<=r){
        t[k++]=b[j++];
    }
    for(ll i=l;i<=r;i++){
        b[i]=t[i];
    }
}

void binarysortc(ll l,ll r){
    if(l>=r){
        return;
    }
    ll mid=(l+r)>>1;
    binarysortc(l,mid);
    binarysortc(mid+1,r);
    ll i=l,j=mid+1,k=l;
    while(i<=mid&&j<=r){
        if(c[i]<=c[j]){
            t[k++]=c[i++];
        }else{
            t[k++]=c[j++];
            ans+=mid-i+1;
        }
    }
    while(i<=mid){
        t[k++]=c[i++];
    }
    while(j<=r){
        t[k++]=c[j++];
    }
    for(ll i=l;i<=r;i++){
        c[i]=t[i];
    }
}

int main(){
    #ifndef ONLINE_JUDGE
        freopen("sort.in" ,"r",stdin );
        freopen("sort.out","w",stdout);
    #endif
    cin>>n;
    foru(i,1,n)cin>>a[i];
    for(ll i=1;i<=n;i++){
        if(i%2==1){
            b[++bcnt]=a[i];
        }else{
            c[++ccnt]=a[i];
        }
    }
    binarysortb(1,bcnt);
    ans2=ans;
    ans=0;
    binarysortc(1,ccnt);
    if(abs(ans-ans2)&1){
        if(n%2){
            swap(b[bcnt-1],b[bcnt]);
        }else{
            swap(c[ccnt-1],c[ccnt]);
        }
    }
    foru(i,1,n){
        if(i%2==1){
            cout<<b[(i+1)/2]<<" ";
        }else{
            cout<<c[i/2]<<" ";
        }
    }
    return 0;
}