#joi2014yof. [joi2014yo_f]小籠包 (Xiao Long Bao)

[joi2014yo_f]小籠包 (Xiao Long Bao)

问题

JOI 君决定在午餐时间去中餐馆吃小笼包。小笼包是用小麦粉皮包裹馅料和热汤的一道菜肴,以汤水在周围飞溅而闻名。

JOI 君点了一个小笼包套餐,其中包括 NN 个不同馅料和汤水的小笼包。这 NN 个小笼包等距离地排列在一行上,并依次被编号为从 11NN。第 ii 个小笼包与第 jj 个小笼包之间的距离是绝对值 ij|i - j|

JOI 君按照某个顺序逐个吃掉小笼包。一开始,所有小笼包的美味程度为 00。当 JOI 君吃掉第 ii 个小笼包时,周围的汤水会溅到离小笼包 ii 距离不超过 DiD_i 的未吃小笼包上。被汤水溅到的小笼包的美味程度增加 AiA_i。换句话说,如果吃掉第 ii 个小笼包时,仍然有小笼包 jj (满足条件 1leqqjleqqN1 \\leqq j \\leqq NiDileqqjleqqi+Dii - D_i \\leqq j \\leqq i + D_i) 尚未被吃掉,则第 jj 个小笼包的美味程度增加 AiA_i

2014-yo-t6-fig01.png

JOI 君希望通过调整吃的顺序来最大化小笼包的美味程度总和。请编写程序,找出在最佳顺序下 JOI 君吃掉小笼包的美味程度总和。


输入

输入共有 33 行。

11 行包含一个整数 NN (1leqqNleqq1001 \\leqq N \\leqq 100)。

22 行包含 NN 个整数 D1,D2,ldots,DND_1, D_2, \\ldots, D_N (0leqqDileqq70 \\leqq D_i \\leqq 7),以空格分隔。

33 行包含 NN 个整数 A1,A2,ldots,ANA_1, A_2, \\ldots, A_N (0leqqAileqq1,0000 \\leqq A_i \\leqq 1\\,000),以空格分隔。

输出

请输出 JOI 君吃掉小笼包的美味程度总和的最大值(只有一个整数)。


输入示例 1

5
1 0 1 1 2
0 2 6 3 4

输出示例 1

20

在示例 11 中,按照顺序 5533112244 吃掉小笼包,美味程度总和为 2020。没有其他吃法可以使总和超过 2020,因此这是最佳方案。


输入示例 2

10
5 2 7 2 6 5 3 5 3 6
8 7 8 4 0 6 0 10 10 0

输出示例 2

237