4 条题解

  • -3
    @ 2024-8-5 15:09:12

    #include<bits/stdc++.h> using namespace std; const int N=1e6; typedef long long ll; int a[N],b[N],n; ll total=0; inline int read() { char c=getchar();int num=0; for(;!isdigit(c);c=getchar()); for(;isdigit(c);c=getchar()) num=num*10+c-'0'; return num; } void mergesort(int l,int r){ if(l==r) return; int mid=(l+r)/2; mergesort(l,mid); mergesort(mid+1,r); int x=l,y=mid+1,z=l; while(x<=mid&&y<=r){ if(a[x]>a[y]){ b[z++]=a[y++]; total=total+mid-x+1; } else b[z++]=a[x++]; } while(x<=mid) b[z++]=a[x++]; while(y<=r) b[z++]=a[y++]; for(int i=l;i<=r;i++) a[i]=b[i]; } int main() { cin>>n; for(int i=1;i<=n;i++) a[i]=read(); mergesort(1,n); cout<<total<<endl; return 0; }

    包对的

    信息

    ID
    1029
    时间
    1000ms
    内存
    128MiB
    难度
    8
    标签
    (无)
    递交数
    17
    已通过
    6
    上传者