atcoder#ABC216F. [ABC216F] Max Sum Counting

[ABC216F] Max Sum Counting

配点 : 500500

問題文

長さ NN の数列 A=(A1,,AN),B=(B1,,BN)A = (A_1, \dots, A_N), B = (B_1, \dots, B_N) が与えられます。{1,2,,N}\{1,2,\ldots,N\} の空でない部分集合 SS であって、以下の条件を満たすものの個数を数えてください。

  • maxiSAiiSBi\max_{i \in S} A_i \geq \sum_{i \in S} B_i

なお、答えは非常に大きくなることがあるため、998244353998244353 で割ったあまりを出力してください。

制約

  • 1N50001 \leq N \leq 5000
  • 1Ai,Bi50001 \leq A_i,B_i \leq 5000
  • 入力は全て整数

入力

入力は以下の形式で標準入力から与えられる。

NN

A1A_1 A2A_2 \ldots ANA_N

B1B_1 B2B_2 \ldots BNB_N

出力

問題文中の条件を満たす SS の個数を 998244353998244353 で割ったあまりを出力せよ。

2
3 1
1 2
2

{1,2,,N}\{1,2,\ldots,N\} の空でない部分集合としてあり得るものは、{1}\{1\}, {2}\{2\}, {1,2}\{1,2\}33 通りです。

  • S={1}S=\{1\} のとき maxiSAi=3\max_{i \in S} A_i=3, iSBi=1\sum_{i \in S} B_i=1
  • S={2}S=\{2\} のとき maxiSAi=1\max_{i \in S} A_i=1, iSBi=2\sum_{i \in S} B_i=2
  • S={1,2}S=\{1,2\} のとき maxiSAi=3\max_{i \in S} A_i=3, iSBi=3\sum_{i \in S} B_i=3

であるため、問題文中の条件、即ち maxiSAiiSBi\max_{i \in S} A_i \geq \sum_{i \in S} B_i を満たす SS{1}\{1\}{1,2}\{1,2\}22 通りです。

2
1 1
2 2
0

条件を満たす SS が存在しない場合もあります。

20
1937 3980 2689 1208 3640 1979 581 2271 4229 3948 3708 1522 4161 4661 3797 96 3388 3395 2920 2247
4485 2580 174 1156 3770 3396 3558 3500 3494 479 269 3383 1230 1711 3545 3919 134 475 3796 1017
476