比赛 |
集训 |
评测结果 |
AAAAAAAAAA |
题目名称 |
遵循指令之意 |
最终得分 |
100 |
用户昵称 |
梧叶已同秋雨去 |
运行时间 |
2.380 s |
代码语言 |
C++ |
内存使用 |
9.83 MiB |
提交时间 |
2025-07-03 09:59:46 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
long long a[1000005],b[1000005],n,fa[1000005],fb[1000005];
long long ans,sum;
void aing(long long b,long long e){
if(b==e)return;
int mid=(b+e)/2;
aing(b,mid);
aing(mid+1,e);
int i=b,k=b,j=mid+1;
while(i<=mid&&j<=e){
if(a[i]<=a[j]){
fa[k]=a[i];
k++;
i++;
}else{
fa[k]=a[j];
ans+=(mid-i+1);
k++;
j++;
}
}
while(i<=mid){
fa[k]=a[i];
k++;
i++;
}
while(j<=e){
fa[k]=a[j];
k++;
j++;
}
for(int t=b;t<=e;t++){
a[t]=fa[t];
}
return;
}
void bing(long long a,long long e){
if(a==e)return;
int mid=(a+e)/2;
bing(a,mid);
bing(mid+1,e);
int i=a,k=a,j=mid+1;
while(i<=mid&&j<=e){
if(b[i]<=b[j]){
fb[k]=b[i];
k++;
i++;
}else{
fb[k]=b[j];
sum+=(mid-i+1);
k++;
j++;
}
}
while(i<=mid){
fb[k]=b[i];
k++;
i++;
}
while(j<=e){
fb[k]=b[j];
k++;
j++;
}
for(int t=a;t<=e;t++){
b[t]=fb[t];
}
return;
}
int main(){
freopen("sort.in","r",stdin);
freopen("sort.out","w",stdout);
cin>>n;long long an=0,bn=0;
for(int i=1;i<=n;i++){
if(i%2==1){
cin>>a[++an];
}else{
cin>>b[++bn];
}
}
aing(1,an);
bing(1,bn);
sort(a+1,a+an+1);
sort(b+1,b+bn+1);
if((sum%2)!=(ans%2)){
if(n%2==0){
int x;
x=b[bn];
b[bn]=b[bn-1];
b[bn-1]=x;
}else{
int x;
x=a[an];
a[an]=a[an-1];
a[an-1]=x;
}
}int aan=0,bbn=0;
for(int i=1;i<=n;i++){
if(i%2==1){
cout<<a[++aan]<<" ";
}else{
cout<<b[++bbn]<<" ";
}
}
return 0;
}