闯关游戏:计算通关可获得的最大总分
类型:程序题

问题描述

你来到了一个闯关游戏,该游戏总共有$N$关,每关都有$M$个通道,你需要选择一个通道通往后续关卡。其中第$i$个通道可以让你前进$a_i$关:若当前在第$x$关,选择第$i$个通道后将直接来到第$x+a_i$关,若$x+a_i \geq N$则直接通关。此外,当你顺利离开第$s$关时,将获得$b_s$分。 游戏开始时你在第$0$关,请问通关时最多能获得多少总分?

输入描述

第一行两个整数$N,M$,分别表示关卡数量和每关的通道数量。 接下来一行$M$个用单个空格隔开的整数$a_0,a1,\dots,a{M-1}$,保证$1 \leq a_i \leq N$。 接下来一行$N$个用单个空格隔开的整数$b_0,b1,\dots,b{N-1}$,保证$|b_i| \leq 10^5$。

输出描述

输出一行一个整数,表示通关时最多能够获得的分数。

注意:输入输出时不要附带任何提示信息。

样例1

输入

6 2
2 3
1 0 30 100 30 30

输出

131

样例解释

你可以在第0关选择第1个通道($a_1=3$),离开0关获得1分并来到第3关;随后选择第0个通道($a_0=2$),离开3关获得100分并来到第5关;最后任选一个通道,离开5关获得30分后通关,总得分$1+100+30=131$。

样例2

输入

6 2
2 3
1 0 30 100 30 -1

输出

101

样例解释

部分关卡的得分可能为负数,此时可以选择在第3关直接选择前进3关的通道,离开3关获得100分后直接通关,总得分$1+100=101$,避免拿到第5关的-1分。

代码编辑器
测试用例输入
{{resultStatus.text}}