1// 前置:点已按第一维 a 排序
2function cdq(l, r) {
3 if (l >= r) return;
4 const mid = (l + r) >> 1;
5 cdq(l, mid); cdq(mid + 1, r);
6 const L = pts.slice(l, mid+1).sort((x,y) => x.b - y.b);
7 const R = pts.slice(mid+1, r+1).sort((x,y) => x.b - y.b);
8 let i = 0;
9 for (const p of R) {
10 while (i < L.length && L[i].b <= p.b) bitAdd(L[i++].c, 1);
11 ans[p.id] += bitQuery(p.c); // 统计 c ≤ p.c 的个数
12 }
13 for (let j = 0; j < i; j++) bitAdd(L[j].c, -1); // 清空 BIT
14}