1 条题解

  • 0
    @ 2025-7-7 14:45:49

    #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
    上传者