atcoder#ARC131D. [ARC131D] AtArcher

[ARC131D] AtArcher

配点 : 600600

問題文

りんごさんはアーチェリーの大会「AtArcher」に出場しました。

AtArcher では、数直線上に表される的に NN 本の矢を撃って合計得点を競います。的の中心は座標 00 であり、矢が当たった位置に応じて以下のように得点が定められています。

  • i=0,1,,M1i = 0, 1, \dots, M-1 に対して、中心からの距離が rir_i から ri+1r_{i+1} までの場所に当てると sis_i 点を獲得し、中心からの距離が rMr_M より大きい場所に当てると 00 点を獲得する。境界に当たった場合は高い方の得点になる。
  • 中心から近いほど高得点が得られるようになっている。すなわち、次を満たす。- 0=r0<r1<<rM1<rM0 = r_0 \lt r_1 \lt \cdots \lt r_{M-1} \lt r_M
    • s0>s1>>sM1>0s_0 \gt s_1 \gt \cdots \gt s_{M-1} \gt 0
  • 0=r0<r1<<rM1<rM0 = r_0 \lt r_1 \lt \cdots \lt r_{M-1} \lt r_M
  • s0>s1>>sM1>0s_0 \gt s_1 \gt \cdots \gt s_{M-1} \gt 0

例えば、r=(0,2,7,9),s=(100,70,30)r = (0, 2, 7, 9), s = (100, 70, 30) の場合、得点は下図のようになります。

さらに、AtArcher では「どの 22 本の矢も距離 DD 以上の間隔を空ける」という特殊ルールがあります。これに違反した場合は失格となり、全体の得点が 00 点になります。

さて、りんごさんが全ての矢を撃ち終わった時点で、最大何点獲得できるでしょう?

制約

  • 1N1051 \leq N \leq 10^5
  • 1M1051 \leq M \leq 10^5
  • 1D1061 \leq D \leq 10^6
  • $0 = r_0 \lt r_1 \lt \cdots \lt r_{M-1} \lt r_M \leq 10^{11}$
  • $10^{11} \geq s_0 \gt s_1 \gt \cdots \gt s_{M-1} \gt 0$
  • 入力はすべて整数

入力

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

NN MM DD

r0r_0 r1r_1 \cdots rM1r_{M-1} rMr_M

s0s_0 s1s_1 \cdots sM1s_{M-1}

出力

答えを出力してください。

3 3 3
0 2 7 9
100 70 30
270

この入力例は問題文中の例に対応していますが、D=3D = 3 となっています。

例えば、N=3N = 3 本の矢が座標 6,2,1-6, -2, 1 に当たると、それぞれ 70,100,10070, 100, 100 点を獲得します。このとき合計得点は 270270 点となり、実現可能なものとしては最大です。

なお、すべての矢を 100100 点のエリアに当てて 300300 点を取ることはできません。なぜなら、どの 22 本の矢も距離 D=3D = 3 以上の間隔を空けなければ、失格で 00 点になるからです。

3 3 8
0 2 7 9
100 70 30
200

この入力例も問題文中の例に対応していますが、D=8D = 8 となっています。

例えば、N=3N = 3 本の矢が座標 7,1,9-7, 1, 9 に当たると、それぞれ 70,100,3070, 100, 30 点を獲得します。このとき合計得点は 200200 点となり、実現可能なものとしては最大です。

7 5 47
0 10 40 100 160 220
50 25 9 6 3
111

例えば、下図のように矢を当てると、合計得点は 111111 点となり、これが最大です。

100 1 5
0 7
100000000000
300000000000

N=100N = 100 本の矢を当てることができますが、失格にならないためには、得点が入るゾーンに 33 本までしか入れることができません。

15 10 85
0 122 244 366 488 610 732 854 976 1098 1220
10 9 8 7 6 5 4 3 2 1
119