サブタスク 1:一人目が購入するオレンジの部分集合をすべて列挙する。要素数が の各集合について満足度を直接計算し、最大値を求める。時間計算量は 、空間計算量は である。
全体の解法:二人目がすべて購入すると、満足度は となる。 番目を一人目に渡すと、満足度は だけ変化する。
とすると、ちょうど 個の差を選び、その総和を最大化すればよい。降順にソートして大きい方から 個を選ぶ。選んでいない値が選んだ値より大きければ、両者を交換することで総和を増やせるため、この選び方は最適である。同じ値の選択順は任意でよい。
ソート後の値を とすると、答えは
となる。ちょうど 個を選ぶ必要があるため、選ぶ差が負でも省略してはいけない。
各ケースの時間計算量は 、空間計算量は である。答えと途中の和の絶対値は 以下、差の絶対値は 以下となる。和には 64 ビット整数を使う。
Solution written by GPT