1885. Count Pairs in Two Arrays

class Solution:
    def countPairs(self, nums1: List[int], nums2: List[int]) -> int:

        nums = [x - y for x, y in zip(nums1, nums2)]
        nums.sort()

        total = 0
        n = len(nums) - 1

        for i, num in enumerate(nums):
            if num > 0:
                total += n - i
                continue

            l, r = i + 1, n

            result = -1 
            while l <= r:
                m = (l + r) // 2

                if nums[m] + num <= 0:
                    l = m + 1
                else:
                    if m == i + 1 or nums[m - 1] + num <= 0:
                        result = m
                        break
                    else:
                        r = m - 1

            if result != -1:
                total += n - result + 1
        return total