1
fn merge_sort(nums: &mut Vec<(usize, i32)>, l: usize, r: usize, ans: &mut Vec<i32>) {3
let m = l + (r - l) / 2;4
merge_sort(nums, l, m, ans);5
merge_sort(nums, m, r, ans);6
merge(nums, l, m, r, ans);10
fn merge(nums: &mut Vec<(usize, i32)>, l: usize, m: usize, r: usize, ans: &mut Vec<i32>) {11
let mut arr = Vec::with_capacity(r - l);15
while i < m && j < r {16
if nums[i].1 <= nums[j].1 {27
ans[nums[i].0] += (r - m) as i32;36
for (i, n) in arr.into_iter().enumerate() {42
pub fn count_smaller(nums: Vec<i32>) -> Vec<i32> {44
let mut ans = vec![0; len];45
let mut nums = nums.into_iter().enumerate().collect();46
merge_sort(&mut nums, 0, len, &mut ans);