题目大意:给定一个长度为 $n$ 的排列 $p$,计数有多少个 $i < j < k < l$,满足 $p_ip_k=p_jp_l$。
$n\le 50000$。
考虑移项变成 $p_i/p_j=p_l/p_k$,设 $p_i/p_j=a/b$,其中 $a,b$ 互质,那么对于一个 $(i,j,k,l)$,存在有且仅有一个四元组 $(a,b,c,d)$($a,b$ 互质),使得 $(p_i,p_j,p_k,p_l)=(ac,bc,bd,ad)$。
设 $p$ 为 $q$ 的逆排列,那么就相当于计数有多少个 $(a,b,c,d)$($a,b$ 互质),满足 $q_{ac} < q_{bc} < q_{bd} < q_{ad}$。
互质太烦了,直接莫反,枚举 $x$,那么只需要限制 $a,b$ 均为 $x$ 的倍数($a\mid x,b\mid x$),那么就可以最后乘上 $\mu(x)$ 贡献到答案即可。
考虑阈值分治,有一个 $T$。如果 $\max(a,b)\le T$,那么枚举 $a,b$,然后计算出不关注 $d$ 时可能的 $c$ 的集合 $C$(即 $\{c\mid q_{ac} < q_{bc}\}$),以及不关注 $c$ 时可能的 $d$ 的集合 $D$(同上,不再赘述),那么答案就是 $|\{(c,d)\mid c\in C,d\in D,q_{bc} < q_{bd}\}|$。
我们发现约束和 $a$ 无关,所以我们先处理出所有 $q_{b\times i}$ 的顺序,那么按照 $q_{bi}$ 从小到大的顺序枚举 $i$,那么假设当前 $i\in D$,那么就能和之前枚举到的所有 $i\in C$ 的配对,总之就是可以线性扫一次做完。
如果 $\max(a,b)>T$ 了,那么相当于还有 $\max(c,d)\le n/T$。这时候枚举 $c,d$,计算出所有不关注 $b$ 时可能的 $a$ 集合 $A$(即 ${c\mid q_{ac} < q_{ad}}$),以及不关注 $a$ 时可能的 $b$ 集合 $B$(然后你就发现 $A=B$,所以是同一个东西)。注意到此时约束和 $a,b$ 都有关,分别是 $q_{ac} < q_{bc}$ 和 $q_{bd} < q_{ad}$。这个约束是二维偏序,选择其中一个维度做扫描线树状数组即可维护。所以这种情况带 $\log$。简单根号平衡得到 $T=\sqrt{n\log n}$。
然后考虑因为外面还包了一层 $x$,这个积分一下发现复杂度还是不变,所以是对的。