B4514 [四川青少年 C++ 算法设计大赛 2025] 金苹果岛

题目描述

代码勇者来到了金苹果岛上,金苹果岛上有两种苹果:随处可见的红苹果与稀有美味的金苹果。 勇者的初始代码能力为 $ 1 $,他每吃下一个红苹果,代码能力就会得到一定程度的提升(每个红苹果带来的提升可能是不同的,甚至也可能是负的);他每吃下一个金苹果,代码能力就会直接**翻倍**(每个金苹果的效果都是完全相同的)。 岛上的苹果仙子用 $ n $ 个红苹果和 $ m $ 个金苹果招待了勇者,勇者必须吃光所有苹果。勇者必须按照仙子规定的顺序吃红苹果,但是他可以自由安排什么时候吃金苹果(可以在吃任意一个红苹果之前或之后吃若干个金苹果)。 求勇者在离开金苹果岛的时候的代码能力的最大值。

输入格式

第一行输入两个正整数 $ n $($ n \leq 10^5 $)和 $ m $($ m \leq 20 $)。 第二行输入 $ n $ 个正整数 $ a_i $($ |a_i| \leq 10 $)。

输出格式

输出一个整数,表示勇者在离开金苹果岛的时候的代码能力的最大值。

说明/提示

### 【样例 1 解释】 勇者吃掉红苹果 $ 1, -2, 3, 1 $,代码能力变为 $ 4 $; 勇者吃掉 $ 2 $ 颗金苹果,代码能力变为 $ 16 $; 勇者吃掉红苹果 $ -6, 5 $,代码能力变为 $ 15 $。 这是勇者的最优方案。 ### 【子任务】 ::cute-table{tuack} | 测试点编号 | $ m $ | $ a_i $ 非负 | |:-:|:-:|:-:| | $1$ | $ = 0 $ | 是 | | $2$ | ^ | 否 | | $3$ | $ = 1 $ | 是 | | $4$ | ^ | 否 | | $5$ | $ = 5 $ | 是 | | $6$ | ^ | 否 | | $7$ | $ = 10 $ | 是 | | $8$ | ^ | 否 | | $9$ | $ = 20 $ | 是 | | $10$ | ^ | 否 | 对于 $ 100\% $ 的数据,$ n \leq 10^5 $,$ m \leq 20 $,$ |a_i| \leq 10 $。