题目
具体代码
import java.util.*;
public class Main{
static int[] q = new int[100010],tmp = new int[100010];
static long mergeSort(int l,int r){
if(l>=r) return 0;
int mid = l + r >> 1;
long res = mergeSort(l,mid) + mergeSort(mid + 1,r);
int k = 0,i = l,j = mid + 1;
while(i<=mid && j<=r){
if(q[i] <= q[j]) tmp[k ++] = q[i ++];
else{
res += mid - i + 1;
tmp[k ++] = q[j ++];
}
}
while(i<=mid) tmp[k ++] = q[i ++];
while(j<=r) tmp[k ++] = q[j ++];
for(i = l,j = 0;i<=r;i++,j++) q[i] = tmp[j];
return res;
}
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for(int i = 0;i<n;i++) q[i] = sc.nextInt();
long res = mergeSort(0,n - 1);
System.out.print(res);
}
}