Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
139871 | 刘星辰liuxingchen | 求逆序对数 | C++ | 通过 | 100 | 0 MS | 280 KB | 769 | 2024-03-26 14:46:15 |
#include<bits/stdc++.h> using namespace std; typedef long long ll; ll sum_nixu; ll a[500010]; ll n; ll t[500010]; void merge_sort(ll a[],ll l,ll r) { if(l==r) { return ; } ll mid=(l+r)/2; merge_sort(a,l,mid); merge_sort(a,mid+1,r); for(ll i=l,j=mid+1,k=l;k<=r;k++) { if(i==mid+1) { t[k]=a[j]; j++; } else if(j==r+1) { t[k]=a[i]; i++; } else { if(a[i]<=a[j]) { t[k]=a[i]; i++; } else { sum_nixu=sum_nixu+(mid-i+1); t[k]=a[j]; j++; } } } for(ll i=l;i<=r;i++) { a[i]=t[i]; } return ; } int main() { scanf("%lld",&n); for(int i=1;i<=n;i++) { scanf("%lld",&a[i]); } merge_sort(a,1,n); printf("%lld",sum_nixu); return 0; }