PAST3J
PAST3J
流れてくる数値が今まで取ったどれよりも大きい時だけ取るエージェントが複数並んでる時に、どの数値を誰が取るか答える問題。
エージェントごとに「これ以上なら取る」という数値を持っていて、「流れてきた数値xよりも小さい値の最も左のエージェント」を返せば良い。
つまりこれはソート済み配列からの効率良い探索。
二分探索の方法をPythonで調べたら標準ライブラリにbisectってのがあったので初めて使った。 code:python
from bisect import bisect_right
for x in XS:
# need to nagate to keep asc. order
# print("come", x)
i = bisect_right(scores, -x)
if i == N:
print(-1)
else:
print(i + 1)
# print(scores)