25pts其余全TTTTTTT了
查看原帖
25pts其余全TTTTTTT了
1049051
JiuZhE66666楼主2023/10/18 19:12
#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll a[500005]={0};
ll ans=0;
ll n;
void one(ll l,ll mid,ll r)
{
    ll i1=l,i2=mid+1;
    ll len=l;
    ll b[500005]={0};
    while(i1<=mid&&i2<=r)
    {
        if(a[i1]>a[i2])
        {
            ans+=mid-i1+1;
            b[len++]=a[i2++];
        }
        else b[len++]=a[i1++];
    }
    while(i1<=mid)b[len++]=a[i1++];
    while(i2<=r)b[len++]=a[i2++];
    for(ll i=l;i<=r;i++)a[i]=b[i];
}
void divs(ll l,ll r)
{
    if(l>=r)return ;
    ll mid=l+(r-l)/2;
    divs(l,mid);
    divs(mid+1,r);
    one(l,mid,r);
}

int main()
{
    scanf("%lld",&n);
    for(ll i=1;i<=n;i++)scanf("%lld",&a[i]);
    divs(1,n);
    printf("%lld",ans);
    return 0;
}
2023/10/18 19:12
加载中...