记录编号 602322 评测结果 AAAAAAAAAA
题目名称 4166.遵循指令之意 最终得分 100
用户昵称 Gravatar惊世猴人 是否通过 通过
代码语言 C++ 运行时间 1.345 s
提交时间 2025-07-03 15:51:01 内存使用 6.17 MiB
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n,a[500001],b[500001],c[500001],ans1,ans2;
void gb1(int l,int r){
	if(l==r)return;
	int mid=l+r>>1,i=l,j=mid+1,k=l;
	gb1(l,mid);
	gb1(j,r);
	while(i<=mid&&j<=r){
		if(a[i]<=a[j])c[k++]=a[i++];
		else c[k++]=a[j++],ans1+=(mid-i+1);
	}
	while(i<=mid)c[k++]=a[i++];
	while(j<=r)c[k++]=a[j++];
	for(int x=l;x<=r;x++)a[x]=c[x];
}
void gb2(int l,int r){
	if(l==r)return;
	int mid=l+r>>1,i=l,j=mid+1,k=l;
	gb2(l,mid);
	gb2(j,r);
	while(i<=mid&&j<=r){
		if(b[i]<=b[j])c[k++]=b[i++];
		else c[k++]=b[j++],ans2+=(mid-i+1);
	}
	while(i<=mid)c[k++]=b[i++];
	while(j<=r)c[k++]=b[j++];
	for(int x=l;x<=r;x++)b[x]=c[x];
}
int main(){
	freopen("sort.in","r",stdin);
	freopen("sort.out","w",stdout);
	cin>>n;
	for(int i=1;i<=n/2;i++){
		scanf("%d%d",&a[i],&b[i]);
	}
	if(n&1)cin>>a[n+1>>1];
	gb1(1,n+1>>1);
	gb2(1,n>>1);
	sort(a+1,a+(n+1>>1)+1); 
	sort(b+1,b+(n>>1)+1); 
//	cout<<ans1<<' '<<ans2<<'\n';
	if(ans1%2==ans2%2){
		for(int i=1;i<=n>>1;i++){
			printf("%d %d ",a[i],b[i]);
		}
		if(n&1)cout<<a[n+1>>1];
	}else{
		if(n&1)swap(a[n+1>>1],a[(n+1>>1)-1]);
		else swap(b[n>>1],b[(n>>1)-1]);
		for(int i=1;i<=n>>1;i++){
			printf("%d %d ",a[i],b[i]);
		}
		if(n&1)cout<<a[n+1>>1];
	}
	fclose(stdin);
	fclose(stdout);
	return 0;
}