在一个数组中,如果两个元素 a[i] 和 a[j]满足i < j且 a[i] > a[j],则a[i] 和 a[j]是一个逆
序对。
下面代码可以正确统计数组a区间 [l,r] 内的逆序对总数。
long long cnt=0; void merge_count(vector<int>& a, int l, int m, int r){ int i = l, j = m + 1; while(i <= m && j <= r) { if(a[i] <= a[j]) i++; else { cnt += (m - i+ 1); j++; } } }