社区讨论

逆序对模板ACP1174红一片

P1774最接近神的人参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@lq7glgkx
此快照首次捕获于
2023/12/16 10:48
2 年前
此快照最后确认于
2023/12/16 10:51
2 年前
查看原帖
CPP
#include<bits/stdc++.h>
#define int long long
#define db double

using namespace std;
const int N=5*1e5+10;
const int INF=2147483647;
int a[N],b[N];
int n,mid,i,j,k=1,res=0;
void merge(int l,int r){
    int mid=(l+r)>>1;
    i=l;j=mid+1,k=1;
    while(i<=mid&&j<=r){
        if(a[i]<=a[j]){
            b[k++]=a[i++];
        }else b[k++]=a[j++],res+=mid-i+1;
    }
    while(i<=mid){
        b[k++]=a[i++];
    }
    while(j<=r){
        b[k++]=a[j++];
    }
    k=1;
    for(int i=l;i<=r;i++){
        a[i]=b[k++];
    }
    return;
}
void merge_sort(int l,int r){
    mid=(l+r)>>1;
    if(l<r){
        merge_sort(l,mid);
        merge_sort(mid+1,r);
        merge(l,r);
    }
    return;
}
signed main(){
	ios::sync_with_stdio(0);
	cin.tie(0);cout.tie(0);
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    merge_sort(0,n);
    cout<<res;
	return 0;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...