窥见其门径。
容易发现 \(5000\) 次操作就是个假的,你把 \(p\) 在规定范围内求出来之后就随便做了。
根据经典结论,将每个点的限制转成若干个起始位置不同的后缀进行查询,容易发现可能查询查不满,但一定不会超,且卡了最紧的上界。
也就是说我们现在需要让每个 \(i\) 都作为一次查询的最初位置,并且需要查询出所有 \(p\) 的值。
首先想一想第一次怎么操作而合法,为了保险起见我们必须选 \(p_0 - 1\),因为不能比最大的大不能比最小的小。
然后我们想接下来怎么办,我们需要使下一次不选 \(1\)(因为第一次 \(1\) 肯定选完了),同时不能低于下界,我们选择平均数查询。观察这个过程,其实就是每次将初始位置向后挪,一直到 \(n - 1\)。
这时我们可以很容易求出 \(n - 1\) 的值,考虑如何反推。
我们继续如上过程,不过如果一个方程里有 \(p_{n - 1}\),我们将其化作常量,不计入平均数中,相当于将规模从 \(n - 1 \to n - 2\),顺水推舟的求出 \(p_{n - 2}\)。以此类推,求出所有 \(p\) 就做完了。
感觉这种题有点跟出题人对做法,但是放在 IOI 里就不奇怪了。