比赛 集训 评测结果 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;
}