以下の つの配列を用意します。
のクエリにおいて、明らかに重さが小さい木の実から順に取っていくことが最適です。
そうすると、 の累積和について二分探索をすることによってクエリに対する答えを求めることができます。
具体的には、 となるような最大の を求めるとよいです。
累積和を愚直に計算すると、実行制限時間に間に合わないため、Binary Indexed Tree などのデータ構造を用いると十分高速です。
また、木の実の重さは までが入力で与えられるので、座標圧縮などを用いないといけないことに注意してください。
計算量は となります。