2328: 闯关游戏(2023年12月C++六级)
Memory Limit:128 MB
Time Limit:1.000 S
Judge Style:Text Compare
Creator:
Submit:21
Solved:8
Description
你来到了一个闯关游戏。
这个游戏总共有n关,每关都有m个通道,你需要选择一个通道并通往后续关卡。其中,第i个通道可以让你前进 ai 关,也就是说,如果你现在在第x关,那么选择第i个通道后,你将直接来到第 x + ai 关(特别地,如果 x+ai >=n ,那么你就通关了)。此外,当你顺利离开第s关时,你还将获得 bs 分。
游戏开始时,你在第0关。请问,你通关时最多能获得多少总分?
Input
第一行两个整数n,m, 分别表示关卡数量和每关的通道数量。
接下来一行m个用单个空格隔开的整数 a0, a1,a2, .... am-1 。保证 1<=ai<=n 。
接下来一行n个用单个空格隔开的整数 b0, b1, b2,.... bn-1。保证 |bi| <= 10^5。
Output
一行一个整数,表示你通关时最多能够获得的分数。
Sample Input Copy
6 2
2 3
1 0 30 100 30 30
Sample Output Copy
131
HINT
【样例说明1】
你可以在第0关选择第1个通道,获得1分并来到第3关;随后再选择第0个通道,获得100分并来到第5关;最后任选一个通道,都可以获得30分并通关。如此,总得分为1+100+30=131。
【输入样例2】
6 2
2 3
1 0 30 100 30 -1
【输出样例2】
101
【样例说明2】
请注意,一些关卡的得分可能是负数。
【样例说明2】
对于所有测试点,保证 n<=100000, m<=100。