编辑代码

#include<iostream>
using namespace std;
const int MAX_N=1000000;
long long res=0;

void Merge(int arr[],int startIndex,int mid,int endIndex) {
	int i=startIndex;
	int j=mid+1;
	int k=0;
	int temp[endIndex-startIndex+1]; 
	while(i<=mid&&j<=endIndex)
		if(arr[i]<=arr[j])	temp[k++]=arr[i++];
		else {
			temp[k++]=arr[j++];
			res+=mid-i+1;	
		}
	while(i<=mid)	temp[k++]=arr[i++];
	while(j<=endIndex)	temp[k++]=arr[j++];
	for(int i=0;i<endIndex-startIndex+1;i++)
		arr[startIndex+i]=temp[i]; 
}

void MergeSort(int arr[],int startIndex,int endIndex) {
	if(startIndex<endIndex) { 
		int mid=(startIndex+endIndex)/2;
		MergeSort(arr,startIndex,mid);
		MergeSort(arr,mid+1,endIndex);
		Merge(arr,startIndex,mid,endIndex); 
	}
}

int main() {
	int arr[MAX_N];
	int N;
	cin>>N;
	for(int i=0;i<N;i++)
		cin>>arr[i];
	MergeSort(arr,0,N-1);
	cout << res;
	return 0;
}