TSG LIVE! 13 プログラミングコンテスト
コンテスト日時
2024/11/23 (Sa) 13:05 - 14:45

G - Envy Greed Allocation

Darjeeling
2
s
1024
MB
500

問題文

$N$個の宝石があり、AさんとBさんはこれを二人ですべて分け合おうとしています。
各宝石には価値がありますが二人の価値観は異なるので、$i$番目の宝石$(i=1,2,...,N)$に対して、Aさんは$A_i$の、Bさんは$B_i$の価値を感じます。
また、分け方に対して、Aさん、Bさんそれぞれの嬉しさをそれぞれが分けられた宝石の価値の合計と定めます。
ここで、二人は嫉妬深く、強欲なので、分け方について次の二つを満たしている必要があります。
・二人に分けられる宝石を逆に入れ替えたときに、二人とも嬉しさが元の分け方以下である。
 より具体的には、Aさんへ分ける宝石の集合を$S \subset \lbrace 1,2,...,N \rbrace$とするとき、
 ・$\sum_{i \in S} A_i \geq \sum_{i \notin S} A_i$
 ・$\sum_{i \notin S} B_i \geq \sum_{i \in S} B_i$
 がともに成り立つ。
・二人の嬉しさの和が、上を満たす分け方の中で最大であり、またそのもとで二人の嬉しさの積が最大である。
このような分け方のときのAさんの嬉しさとBさんの嬉しさの和と積を求めてください。

制約

  • $1 \leq N \leq 2000$
  • $1 \leq A_i,\ B_i \leq 4000\ (i=1,2,...,N)$
  • $\sum_{i=1}^N A_i,\ \sum_{i=1}^N B_i \leq 4000$

入力

$N$

$A_1\ B_1$

$A_2\ B_2$

$\vdots$

$A_N\ B_N$

出力

条件を満たす分け方のときのAさんの嬉しさとBさんの嬉しさの和と積を出力してください。条件を満たす分け方が存在しないときは代わりに-1を出力して下さい。

入力例 1
5 6 3 1 2 3 4 7 5 8 1
出力例 1
25 154

Aさんに1, 5番目のBさんに2, 3, 4番目の宝石を分けるとよいです。このとき、二人に分ける宝石を逆に入れ替えると、Aさんの嬉しさは11、Bさんの嬉しさは4となり、どちらももとの分け方の嬉しさ以下です。また、このもとで二人の嬉しさの和を25より大きくする分け方は存在せず、二人の嬉しさの和が25となり、積が154より大きくなる分け方も存在しません。

入力例 2
2 999 999 1 1
出力例 2
-1

二人とも1番目の宝石が欲しいため、条件を満たす分け方は存在しません。

入力例 3
1 1 1
出力例 3
-1

このとき、Aさんに1番目の宝石を分けると、逆に入れ替えたときにBさんの嬉しさが大きくなってしまいます。Bさんに分けたときも同様です。宝石を一つも分けられていない人の嬉しさが0であることに注意してください。

提出
C++23 (g++ 12.2.0)