开局第一眼看到的这个题。
很快可以发现将 $K$ 按照 $K\leq 10000$ 和 $K>10000$ 讨论一下。
当 $K<10000$ 的时候可以直接暴力。
当 $K>10000$ 的时候发现,能产生有效贡献的 $a_i$ 一定位于 $[0,5000)\cup(K-5000,K]$。并且把后面那一段倒着跟前面做一个并集就是 $[0,5000)$ 中每个数的出现情况。
由于在补上一场网络赛的 J 题的时候写的 bitset 模拟,这里很快想到 bitset。于是将询问排序,从前往后双指针维护后半段的 bitset 即可。
然后将按位或得到的 bitset 取反找第一个 $1$ 就是答案,可以使用 _Find_first()。由于赛场上忘记了这个函数,瞎写了几个被编译器提示了 [Error] 'class std::bitset<5010>' has no member named 'Find_first'; did you mean '_Find_first'?。
但是前面忘记预处理 $K=0$ 的答案了,对拍还没有造 $K=0$,调了一年最后被队友指出来,已红温。
复杂度 $O(\frac{nQ}{\omega}+n^2)$,赛后 QOJ 只跑了 200ms。

