Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
136421 | zhangyang | 求逆序对数 | C++ | 通过 | 100 | 0 MS | 268 KB | 553 | 2024-03-09 09:20:42 |
#include<iostream> using namespace std; const int N=1e4; int ans=0,a[N],n,b[N]; void mergesort(int l,int r){ int mid=l+r>>1; if(l==r){ return ; } mergesort(l,mid); mergesort(mid+1,r); for(int i=l;i<=r;i++) b[i]=a[i]; int i=l,j=mid+1; while(i<=mid&&j<=r){ if(b[i]>b[j]){ ans+=mid-i+1; a[l++]=b[j++]; }else{ a[l++]=b[i++]; } } while(i<=mid){ a[l++]=b[i++]; }while(j<=r){ a[l++]=b[j++]; } } signed main(){ cin>>n; for(int i=1;i<=n;i++) cin>>a[i]; mergesort(1,n); cout<<ans; return 0; }