#include <iostream>
#include <cstdlib>
using namespace std;
int arr[100000];//原始数组
int sorted[100000];//已排序的数组
long long sum = 0; // 逆序数
//合并过程
void conquer(int left, int mid, int right){
int L = left ;//左起点
int R = mid+1;//右起点
int index = L;
while(L <= mid && R<= right){
if (arr[L] <= arr[R]) {
//左元素 < 右元素, 无逆序数
sorted[index++] = arr[L++];
}
else{
//相反,子逆序数等于L与R之间元素个数
sorted[index++] = arr[R++];
sum += (mid - L + 1);
}
}
//将剩余元素排列放回原数组中
while(L <= mid){
sorted[index++] = arr[L++];
}
while(R<= right){
sorted[index++] = arr[R++];
}
for (int i = left; i <= right; ++i) {
arr[i] = sorted[i];
}
}
//“分”的过程
void divide(int left, int right){
if(