在一个数组中,如果两个元素 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++;
}
}
}
正确
错误