B. 可获得的最大点数

内存限制:256 MiB 时间限制:1000 ms 输入文件: zui.in 输出文件: zui.out
题目类型:传统 评测方式:文本比较

题目描述

几张卡牌 排成一行,每张卡牌都有一个对应的点数。点数由整数数组 a 给出。

每次行动,你可以从行的开头或者末尾拿一张卡牌,最终你必须正好拿 k 张卡牌。

你的点数就是你拿到手中的所有卡牌的点数之和。

给你一个整数数组 a 和整数 k,请你返回可以获得的最大点数。

输入格式

第一行:n 和 k , n 表示数组元素个数,k 表示 k 张卡牌

第二行,数组 a 的 n 个元素。

输出格式

获得的最大点数

样例

示例 1:

输入:

7 3
1 2 3 4 5 6 1

输出:

12

解释:最优策略是拿右边的三张牌,最终点数为 1 + 6 + 5 = 12 。

示例 2:

输入:

3 2
2 2 2

输出:

4

解释:无论你拿起哪两张卡牌,可获得的点数总是 4 。

示例 3:

输入:

7 7
9 7 7 9 7 7 9

输出:

55

解释:你必须拿起所有卡牌,可以获得的点数为所有卡牌的点数之和。

示例 4:

输入:

3 1
1 1000 1

输出:

1

解释:你无法拿到中间那张卡牌,所以可以获得的最大点数为 1 。

示例 5:

输入:

8 3
1 79 80 1 1 1 200 1

输出:

202

数据范围与提示

1 <= n <= 3*10^5

1 <= a[i] <= 10^3

1 <= k <= n