https://atcoder.jp/contests/agc011/tasks/agc011_b

AiA_i を降順にソートしても一般性を失わない。

大きいものの方が吸収しづらいから、1番最後に11, その前に 2,,2, \ldots, を吸収したとして良い。 A1,,AiA_1, \ldots, A_i を吸収するのに必要な最小のとなる生き物の大きさの整数値を BiB_i とする。

B1=A1/2B_1 = \lceil A_1 / 2\rceil である。 AiA_i が吸収でき、さらにその後 i1,,1i-1, \ldots, 1 が吸収できる条件を考えると、 Bi=max(Ai/2,Bi1Ai)B_i = \max(\lceil A_i / 2 \rceil, B_{i-1}-A_i) である。

ii に対し、iii+1i+1 以降を吸収できるから、k=inAkBi1 \sum_{k=i}^n A_k \ge B_{i-1} を満たすかどうか判定すれば良い。

https://atcoder.jp/contests/agc011/submissions/32165993