- 【模板】排序
xxx
- 2025-3-4 20:09:12 @
#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