3 条题解
-
1
#include<bits/stdc++.h> using namespace std; const int N=5e6+2840; long long n,ans,a[N],b[N]; void m(int l,int r){ if(l==r)return; int mid=l+r>>1; m(l,mid); m(mid+1,r); int i=l,j=mid+1,k=l; while(i<=mid&&j<=r){ if(a[i]<=a[j]){ b[k++]=a[i++]; }else{ b[k++]=a[j++]; ans+=mid-i+1; } } while(i<=mid){ b[k++]=a[i++]; } while(j<=r) b[k++]=a[j++]; for(int i=l;i<=r;i++) a[i]=b[i]; } int main(){ cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; } m(1,n); cout<<ans; return 0; } //带飞
信息
- ID
- 1252
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 6
- 标签
- 递交数
- 71
- 已通过
- 23
- 上传者