#ATarc131d. [ARC131D] AtArcher

[ARC131D] AtArcher

题目描述

りんごさん参加了射箭比赛“AtArcher”。

在 AtArcher 中,选手要在数轴上的靶子上射出 NN 支箭,以比拼总得分。靶子的中心位于坐标 00,根据箭命中的位置,得分规则如下:

  • 对于 i=0,1,,M1i = 0, 1, \dots, M-1,如果箭命中的位置距离中心在 rir_iri+1r_{i+1} 之间,则获得 sis_i 分;如果距离大于 rMr_M,则得分为 00如果正好命中边界,则按较高分数计算。
  • 距离中心越近,得分越高。即满足以下条件:
    • 0=r0<r1<<rM1<rM0 = r_0 < r_1 < \cdots < r_{M-1} < r_M
    • s0>s1>>sM1>0s_0 > s_1 > \cdots > s_{M-1} > 0

例如,当 r=(0,2,7,9), s=(100,70,30)r = (0, 2, 7, 9),\ s = (100, 70, 30) 时,得分如下图所示。

此外,AtArcher 还有一条特殊规则:“任意两支箭之间的距离必须至少为 DD。”如果违反此规则,则会被判定为失格,总得分为 00

现在,已知りんごさん已经射完所有的箭,请问她最多能获得多少分?

输入格式

输入通过标准输入给出,格式如下:

NN MM DD r0r_0 r1r_1 \cdots rM1r_{M-1} rMr_M s0s_0 s1s_1 \cdots sM1s_{M-1}

输出格式

请输出答案。

样例 1

输入

3 3 3
0 2 7 9
100 70 30

输出

270

样例 2

输入

3 3 8
0 2 7 9
100 70 30

输出

200

样例 3

输入

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

输出

111

样例 4

输入

100 1 5
0 7
100000000000

输出

300000000000

样例 5

输入

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

说明/提示

限制条件

  • 1N1051 \leq N \leq 10^5
  • 1M1051 \leq M \leq 10^5
  • 1D1061 \leq D \leq 10^6
  • $0 = r\_0 < r\_1 < \cdots < r\_{M-1} < r\_M \leq 10^{11}$
  • 1011s0>s1>>sM1>010^{11} \geq s_0 > s_1 > \cdots > s_{M-1} > 0
  • 所有输入均为整数

样例解释 1

本样例对应题目中的例子,但 D=3D = 3。例如,将 N=3N = 3 支箭分别射在坐标 6,2,1-6, -2, 1,可以分别获得 70,100,10070, 100, 100 分。此时总得分为 270270 分,是可实现的最大得分。 需要注意,不能将所有箭都射入 100100 分区域获得 300300 分,因为任意两支箭之间必须至少间隔 D=3D = 3,否则会被判定为失格,总得分为 00

样例解释 2

本样例也对应题目中的例子,但 D=8D = 8。例如,将 N=3N = 3 支箭分别射在坐标 7,1,9-7, 1, 9,可以分别获得 70,100,3070, 100, 30 分。此时总得分为 200200 分,是可实现的最大得分。

样例解释 3

例如,如下图所示射箭时,总得分为 111111 分,这是最大值。

样例解释 4

虽然可以射 N=100N = 100 支箭,但为了不被判定为失格,在有得分的区域内最多只能放入 33 支箭。

由 ChatGPT 4.1 翻译