比赛 集训 评测结果 AAAAAAAAAA
题目名称 遵循指令之意 最终得分 100
用户昵称 Ruyi 运行时间 2.290 s
代码语言 C++ 内存使用 7.12 MiB
提交时间 2025-07-03 11:00:06
显示代码纯文本
#include<bits/stdc++.h>
#define ll long long
#define N 500001
using namespace std;
ll n,m,e[N],o[N];
bool t[N*2],sum;
void ud(int x){
    while(x<=n){
        t[x]=!t[x];
        x+=x&-x;
    }
}
bool gs(int x){
    bool sum=0;
    while(x){
        sum^=t[x];
        x&=x-1;
    }
    return sum;
}
int main(){
    freopen("sort.in","r",stdin);
    freopen("sort.out","w",stdout);
    cin>>n;
    m=n>>1;
    for(int i=1;i<=m;i++) cin>>e[i]>>o[i];
    if(n&1) cin>>e[m+1];
    if(n<4){
        for(int i=1;i<=m;i++) cout<<e[i]<<' '<<o[i]<<' ';
        if(n&1) cout<<e[m+1]<<endl;
        return 0;
    }
    if(n&1) m++;
    for(int i=m;i;i--){
        sum^=gs(e[i]);
        ud(e[i]);
    }
    for(int i=1;i<=n;i++) t[i]=0;
    sort(e+1,e+m+1);
    if(n&1) m--;
    for(int i=m;i>0;i--){
        sum^=gs(o[i]);
        ud(o[i]);
    }
    sort(o+1,o+m+1);
    if(sum){
        if(n&1) swap(e[m],e[m+1]);
        else swap(o[m-1],o[m]);
    }
    for(int i=1;i<=m;i++) cout<<e[i]<<' '<<o[i]<<' ';
    if(n&1) cout<<e[m+1]<<endl;
    return 0;
}