记录编号 548543 评测结果 AAAAAAAAAA
题目名称 排序工作量-加强版 最终得分 100
用户昵称 GravatarZooxTark➲ 是否通过 通过
代码语言 C++ 运行时间 0.259 s
提交时间 2020-01-23 14:33:09 内存使用 14.04 MiB
显示代码纯文本
#include <iostream>
#include <cstdio>

using namespace std;

int iSort[50000],iTplt[50000];
int iCount = 0;

bool OpenFile()
{
    FILE * fin = freopen("px.in","r",stdin);
    FILE * fout = freopen("px.out","w",stdout);
    if(fin != NULL && fout != NULL)
        return true;
    else
        return false;
}

void Msort(int f,int b)
{
    if(f == b)
        return;
    int mid = (f + b) / 2;
    Msort(f,mid);
    Msort(mid + 1,b);
    int i = f,j = mid + 1,k = f;
    while(i <= mid && j <= b)
    {
        if(iSort[i] <= iSort[j])
        {
            iTplt[k] = iSort[i];
            k++;
            i++;
        }
        else
        {
            iTplt[k] = iSort[j];
            k++;
            j++;
            iCount += mid - i + 1;
        }
    }
    while(i <= mid)
    {
        iTplt[k] = iSort[i];
        k++;
        i++;
    }
    while(j <= b)
    {
        iTplt[k] = iSort[j];
        k++;
        j++;
    }
    for(int i = f;i <= b;i++)
    {
        iSort[i] = iTplt[i];
    }
}

int main()
{
    if(!OpenFile())
        return 0;
    int n;
    cin >> n;
    for(int i = 0;i < n;i++)
    {
        cin >> iSort[i];
    }
    Msort(0,n - 1);
    cout << iCount;
    return 0;
}