I Don't Like Summer

2 secs 1024 MB
Eszero's icon Eszero

この問題では、AA を昇順にソートし、forループなどを用いて X<AiX < A_i を満たす ii を線形探索することにより、各質問に O(N)O(N) で答えることができます。

しかし、このような愚直なアルゴリズムでは、計算時間が O(NQ)O(NQ) となってしまい、この制約下では実行時間制限に間に合いません。

そこで、各質問に対して高速に答えることでこの問題を AC することができました。

具体的には、昇順にソートした AA に対して、二分探索を利用すると O(log N)O(log \ N)
降順にソートした AA に対して Ak<xA_k < x となるかを判定すると O(1)O(1) で各質問に答えることができます。


Python, bisectによる実装例