#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;
}

0 comments

No comments so far...

Information

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