1 solutions

  • 3
    @ 2024-1-25 11:07:54
    #include<bits/stdc++.h>
    
    using namespace std;
    
    long long a[114514], r[114514];
    long long ans = 0;
    void mosort (long long s, long long t)
    {
    if(s == t) return ;
    long long mid = (s + t) / 2;
    mosort(s, mid);
    mosort(mid + 1, t);
    int i = s, j = mid + 1, k = s;
    while(i <= mid && j <= t)
    {
    if(a[i] <= a[j])
    {
    r[k] = a[i];
    k++;
    i++;
    }
    else
    {
    r[k] = a[j];
    k++;
    j++;
    ans+=mid-i+1;
    }
    }
    while(i <= mid)
    {
    r[k] = a[i];
    k++;
    i++;
    }
    while(j <= t)
    {
    r[k] = a[j];
    k++;
    j++;
    }
    for(int i = s; i <= t; i++) a[i] = r[i];
    }
    
    int main()
    {
    int n;
    cin >> n;
    for(int i = 1; i <= n; i++)
    {
    cin >> a[i];
    }
    mosort(1,n);
    cout << ans;
    return 0;
    }
    
    
    • 1

    Information

    ID
    722
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    5
    Tags
    # Submissions
    38
    Accepted
    17
    Uploaded By