CF555D Case of a Top Secret

题目描述

平面上有 $n$ 个钉子,从 $1$ 到 $n$ 编号,第 $i$ 个钉子的坐标是 $(x_i,0)$。 把一个长度为 $L$,带重物的绳子系到第 $i$ 个钉子上,即重物所在的坐标是$(x_i,-L)$。然后将重物向右推,绳子开始逆时针旋转。 如果旋转的过程中绳子碰到其它的钉子,就会绕着那个钉子旋转。 如果绳子碰到多个钉子,那么它会绕着离刚才的钉子的最远的那个钉子转。(参考图示) 如果绳子的末端碰到了一个钉子,那么绳子也会绕着那个钉子、以长度为 $0$ 的在转。 每个钉子都很细,重物绕着它旋转时,不影响到绳子的长度。 经过一段时间之后,重物就会一直绕着某个钉子转。 现在有 $m$ 个查询,每个查询给出初始的绳子长度以及挂在哪个钉子下旋转,请找出重物最终会绕哪个钉子旋转。

输入格式

第 $1$ 行两个整数 $n,m$,分别表示钉子数和绳子重物数。 第 $2$ 行 $n$ 个整数 $x_i$,表示钉子的横坐标。 接下来 $m$ 行,每行两个整数 $a_i,l_i$,表示绳子绑在第 $a_i$ 个钉子上,绳长 $l_i$。

输出格式

$m$ 行,每行一个整数,表示第 $i$ 根绳子最终绕着转的钉子编号。

说明/提示

$1\le n,m\le 2\times10^5$ $1\le a_i\le n$ $-10^9\le x_i\le 10^9$ $1\le l_i\le 10^9$ 翻译修改自[题解](https://www.luogu.com.cn/blog/SJYAKIOI/solution-cf555d)