小红认为一个数对 (x,y) 如果满足 ∣x−y∣=∣x∣−∣y∣,那么这个数对是和谐的。
现在给定一个长度为 n 的数组 a ,请你统计有多少对 (i,j)(i<j) 满足 (ai,aj) 是和谐的。
小红认为一个数对 (x,y) 是和谐的,当且仅当满足 ∣x−y∣=∣x∣−∣y∣。给定一个数组,统计所有满足条件的数对 (i,j)(i<j)。
这道题的核心在于判断数对 (x,y) 是否满足 ∣x−y∣=∣x∣−∣y∣。通过分析可以发现,满足条件的情况有两种:一是 y=0,此时无论 x 是什么都成立;二是 x 和 y 同符号且 ∣x∣≥∣y∣。因此,我们可以分别处理零元素和同符号元素,利用有序列表(如二分查找)高效统计符合条件的数对数目。最终通过遍历数组并维护正数和负数的有序列表,统计满足条件的数对总数。
条件分析: