1 条题解
-
0
#include<bits/stdc++.h> using namespace std; #define ll long long ll n; ll a[500010],b[500010],ans=0; void zd(ll arr[],ll l,ll r){ if(l>=r){ return; } ll mid=(l+r)/2; zd(arr,l,mid); zd(arr,mid+1,r); ll i=mid; ll j=r; ll k=r; while(i>=l&&j>=mid+1){ if(a[i]>a[j]){ ans+=j-mid; b[k]=a[i]; i--; k--; }else{ b[k]=a[j]; j--; k--; } } while(i>=l){ b[k]=a[i]; i--; k--; } while(j>=mid+1){ b[k]=a[j]; j--; k--; } for(ll i=l;i<=r;i++){ a[i]=b[i]; }
} int main(){ cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; } zd(a,1,n); cout<<ans; return 0; }
- 1
信息
- ID
- 2407
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 7
- 标签
- 递交数
- 13
- 已通过
- 11
- 上传者