Question: 
Write a function to count the number of inversions in the given array.


Model's Code:
def merge_count_split_inv(arr, temp_arr, left, mid, right): 
    i = left    
    j = mid + 1 
    k = left    
    inv_count = 0
  
    while i <= mid and j <= right: 
        if arr[i] <= arr[j]: 
            temp_arr[k] = arr[i] 
            i += 1
        else: 
            temp_arr[k] = arr[j] 
            inv_count += (mid-i + 1) 
            j += 1
        k += 1
  
    while i <= mid: 
        temp_arr[k] = arr[i] 
        i += 1
        k += 1
  
    while j <= right: 
        temp_arr[k] = arr[j] 
        j += 1
        k += 1
  
    for i in range(left, right + 1): 
        arr[i] = temp_arr[i] 
  
    return inv_count 

def merge_sort_and_count(arr, temp_arr, left, right): 
    inv_count = 0
    if left < right: 
        mid = (left + right) // 2
  
        inv_count += merge_sort_and_count(arr, temp_arr, left, mid) 
        inv_count += merge_sort_and_count(arr, temp_arr, mid + 1, right) 
        inv_count += merge_count_split_inv(arr, temp_arr, left, mid, right) 
  
    return inv_count 

def get_inv_count(arr, n): 
    temp_arr = [0] * n
    return merge_sort_and_count(arr, temp_arr, 0, n - 1) 



Sample Correct Code:
def get_inv_count(arr, n): 
	inv_count = 0
	for i in range(n): 
		for j in range(i + 1, n): 
			if (arr[i] > arr[j]): 
				inv_count += 1
	return inv_count 


Asserts:
assert get_inv_count([1, 20, 6, 4, 5], 5) == 5
assert get_inv_count([8, 4, 2, 1], 4) == 6
assert get_inv_count([3, 1, 2], 3) == 2


Tests:
Test 1 of 3: PASS
Test 2 of 3: PASS
Test 3 of 3: PASS

Test 841 of 974: 645/841 (76.69441141498217%): success