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/2⌉B_1 = \lceil A_1 / 2\rceil である。 AiA_i が吸収でき、さらにその後 i−1,…,1i-1, \ldots, 1 が吸収できる条件を考えると、 Bi=max⁡(⌈Ai/2⌉,Bi−1−Ai)B_i = \max(\lceil A_i / 2 \rceil, B_{i-1}-A_i) である。

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

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