比赛 |
集训 |
评测结果 |
AAAAAAAAAA |
题目名称 |
遵循指令之意 |
最终得分 |
100 |
用户昵称 |
KKZH |
运行时间 |
2.407 s |
代码语言 |
C++ |
内存使用 |
12.07 MiB |
提交时间 |
2025-07-03 11:32:21 |
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
int a[1000010],b[1000010],n;
int c[500010];
long long ans,ans1;
void msort(int d,int e){
if(d==e) return;
int mid=(d+e)/2,i=d,j=mid+1,k=d;
msort(d,mid);
msort(mid+1,e);
while(i<=mid&&j<=e)
if(a[i]<=a[j])
c[k++]=a[i++];
else
c[k++]=a[j++],ans +=mid - i+1;
while(i<=mid)
c[k++]=a[i++];
while(j<=e)
c[k++]=a[j++];
for(int l=d;l<=e;l++)
a[l]=c[l];
}
void msort1(int d,int e){
if(d==e) return;
int mid=(d+e)/2,i=d,j=mid+1,k=d;
msort1(d,mid);
msort1(mid+1,e);
while(i<=mid&&j<=e)
if(b[i]<=b[j])
c[k++]=b[i++];
else
c[k++]=b[j++],ans1 +=mid - i+1;
while(i<=mid)
c[k++]=b[i++];
while(j<=e)
c[k++]=b[j++];
for(int l=d;l<=e;l++)
b[l]=c[l];
}
int main(){
freopen("sort.in","r",stdin);
freopen("sort.out","w",stdout);
memset(a,-1,sizeof(a));
memset(b,-1,sizeof(b));
cin>>n;
int len_a=n/2;
int len_b=(n+1)/2;
for(int i=1;i<=n;i++){
if(i%2==0)
cin>>a[i/2];
else
cin>>b[(i+1)/2];
}
ans=0;
if(len_a>0) msort(1,len_a);
ans1=0;
if(len_b>0) msort1(1,len_b);
if(ans%2!=ans1%2){
if(n%2==1)
swap(b[len_b-1],b[len_b]);
else
swap(a[len_a - 1],a[len_a]);
}
for(int i=1;i<=len_b;i++){
cout<<b[i]<< " ";
if(i<=len_a){
cout<<a[i]<< " ";
}
}
return 0;
}