题目描述 In the last mission, MDCS has successfully shipped NN AI robots to Mars. Before they start exploring, system initialization is required so they are arranged in a line. Every robot can be described with three numbers: position ( x_ix i ), radius of sight ( r_ir i ) and IQ ( q_iq i ).
Since they are intelligent robots, some of them will talk if they see each other. Radius of sight is inclusive, so robot can see other all robots in range [x_i - r_i, x_i + r_i][x i −r i ,x i +r i ] . But they don’t walk to talk with anybody, but only with robots who have similar IQ. By similar IQ we mean that their absolute difference isn’t more than KK .
Help us and calculate how many pairs of robots are going to talk with each other, so we can timely update their software and avoid any potential quarrel.
输入格式 The first line contains two integers, numbers N (1 \leq N \leq 10^5)N(1≤N≤10 5 ) and K (0 \leq K \leq 20)K(0≤K≤20) .
Next NN lines contain three numbers each x_i, r_i, q_i (0 \leq x_i,r_i,q_i \leq 10^9)x i ,r i ,q i (0≤x i ,r i ,q i ≤10 9 ) — position, radius of sight and IQ of every robot respectively.
输出格式 Output contains only one number — solution to the problem.
题意翻译 火星上有NN个机器人排成一行,第ii个机器人的位置为x_{i}x i ,视野为r_{i}r i ,智商为q_{i}q i 。我们认为第ii个机器人可以看到的位置是[x_{i}-r_{i},x_{i}+r_{i}][x i −r i ,x i +r i ]。 如果一对机器人相互可以看到,且它们的智商q_{i}q i 的差距不大于KK,那么它们会开始聊天。 为了防止它们吵起来,请计算有多少对机器人可能会聊天。
输入输出样例 输入 #1复制 3 2 3 6 1 7 3 10 10 5 8 输出 #1复制 1 说明/提示 The first robot can see the second, but not vice versa. The first robot can’t even see the third. The second and the third robot can see each other and their IQs don’t differ more than 2 so only one conversation will happen.
按视野从大到小排序,这样只要右边能看见左边就可以保证互相看见。
发现KK固定,那么左右按智商排序、位置离散化之后可以twopointers一下,套个树状数组,就做完了。
由于复杂度瓶颈在树状数组,没必要归并,可以直接sort。