#include<bits/stdc++.h>

using namespace std;
int a[100010];
int tmp[100010];
long long ans=0;
void mog(int a[],int l,int mid,int r,int tmp[]){
	int i,j,k=0;
	i=l,j=mid+1;
	while(i<=mid&&j<=r){
		if(a[i]<=a[j]){
			tmp[k++]=a[i++];
		}else{
			tmp[k++]=a[j++];
			ans+=mid-i+1;
		}
	}
	while(i<=mid){
		tmp[k++]=a[i++];
	}
	while(j<=r){
		tmp[k++]=a[j++];
	}
	for(int i=0;i<k;i++){
		a[l++]=tmp[i];
	}
}
void meg(int *a,int l,int r,int t[]){
	if(r-l>=1){
		int mid=(l+r)/2;
		meg(a,l,mid,t);
		meg(a,mid+1,r,t);
		mog(a,l,mid,r,t);
	}
}

int main(){
	int n;
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>a[i];
	}
	meg(a,0,n-1,tmp);
	for(int i=0;i<n;i++){
		cout<<tmp[i]<<" ";
	}
	return 0;
}

1 comments

  • @ 2025-4-30 20:32:15

    无意义帖子+讨论区题解,举报!@ 请求删除帖子!

    👎 1
    • 1

    Information

    ID
    177
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    2
    Tags
    # Submissions
    74
    Accepted
    9
    Uploaded By