Problem6052--晨跑

6052: 晨跑

[Creator : ]
Time Limit : 1.000 sec  Memory Limit : 256 MiB

Description

皮皮有每天晨跑的好习惯。他每次跑步的时长都恰好为 $n$ 分钟。在这 $n$ 分钟的跑步前,皮皮的疲劳值初始为 $0$。
在任一分钟内,皮皮可以选择跑步,也可以考虑休息。每跑一分钟,皮皮的疲劳值就会增加 $1$,而每休息一分钟,皮皮的疲劳值则减 $1$(如果这一分钟休息前的疲劳值为 $0$,则休息后仍旧为 $0$)。但是,每当皮皮休息时,他会一直休息到疲劳值为 $0$ 时,才会考虑继续跑步。当然,为了身体健康,皮皮决不能让自己的疲劳值超过 $m$。
显然,皮皮每分钟的跑步速度不可能完全相同。如果这一分钟跑步会让疲劳值增加至 $i$,则皮皮在这一分钟的跑步速度就是 $S_i$。
皮皮希望在 $n$ 分钟的跑步结束时,疲劳值恰好为 $0$,但又能在这 $n$ 分钟内跑出尽可能远的距离。你能帮他计算,他能够跑出最远的距离是多少吗?

Input

第一行,包含两个用空格分隔的正整数 $n,\ m$,分别表示跑步时长、疲劳值的上限。
第二行,包含 $m$ 个用空格分隔的正整数 $S_1,\ S_2,\ \ldots,\ S_m$,依次表示疲劳值 $1 \sim m$ 时所分别对应的跑步速度。

Output

仅一行,包含一个整数,表示皮皮 $n$ 分钟能够跑出的最远距离。

Constraints

对于 $30\%$ 的数据,保证 $1≤n≤20,\ 1≤m≤8,\ 1≤S_i≤1000$。
另有 $20\%$ 的数据,保证 $m = 1$。
另有 $10\%$ 的数据,保证 $S_i$ 单调递减。
对于100%的数据,保证 $1≤n≤10000,\ 1≤m≤500,\ 1≤S_i≤1000$。

Sample 1 Input

8 3
3 2 8

Sample 1 Output

16
皮皮先跑 $3$ 分钟,跑步距离为 $3+2+8=13$,再休息 $3$ 分钟将疲劳值降为 $0$,接下来跑 $1$ 分钟,距离为 $3$,最后休息 $1$ 分钟,疲劳值降为 $0$,总距离为 $16$。

Source/Category