3
int merge_count(vector<int> &nums, int s, int e) {7
long long int count = 0;8
for (i = s; i <= mid; i++) {9
while ((j <= e) && ((double)nums[i] / 2.0) > nums[j]) {12
count += j - (mid + 1);17
while ((i <= mid) && (j <= e)) {18
if (nums[i] <= nums[j]) {19
ans.push_back(nums[i]);22
ans.push_back(nums[j]);27
ans.push_back(nums[i]);31
ans.push_back(nums[j]);34
for (int k = s; k <= e; k++) {40
int reverse_count(vector<int> &nums, int s, int e) {44
int mid = (s + e) / 2;45
int l_count = reverse_count(nums, s, mid);46
int r_count = reverse_count(nums, mid + 1, e);47
int s_count = merge_count(nums, s, e);48
return (l_count + r_count + s_count);51
int reversePairs(vector<int> &nums) {52
int res = reverse_count(nums, 0, nums.size() - 1);