时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld
题目描述
(题面和图片仅供参考,截至出题时间,剧里 10 岁的小智已然夺冠,宝可梦游戏也已经到了第九世代)
你正在玩某个版本的精灵宝可梦,你来到了一个有特殊挑战的道馆,当然来之前你很熟悉道馆的规则:
你进入道馆时,在屋子 A 的最左上角,而道馆馆主在另一间屋子 B,屋子 B 门在屋子 A 最右下角。游戏设定为游戏的主角每次移动只能上下左右移动,且只能走一整个格子。屋子 A 可移动范围是一个矩形(

行

列格子),有着特殊的魔力——你每次只能向右或向下移动一格,向左、向上都会被奇怪的屏障墙拦住。道馆地板很特殊,地板的每个格子上都标有一个数字

,这意味着,当你站在该格子上时,可以选择消耗携带的一个宝可梦的活力值(每个宝可梦满活力值,且都大于

),以获得格子的祝福,消耗的活力值就是格子上的数字,道馆规则标明了每种数字格子能够获得的祝福值

。在你进门的时候,道馆替你保管了所有道具,只给了你

个恢复活力值的道具,每个道具可以恢复一个宝可梦

点活力值。
显然这是道馆馆主在考验你,你并不知道这个祝福值有什么用,但估计不是坏事。你打算获得最大的祝福值,但也不希望因此让宝可梦的活力值有所减少。你需要想一个两全其美的办法。
输入描述:
第一行包含三个正整数

(

)。
第二行包含十个正整数

(

)。
接下来

行,每行一个长度为

的字符串,表示屋子 A 地板格子上的数字。保证只会出现数字字符。
输出描述:
输出一个数,表示在可以不减少宝可梦活力值的条件下,能得到的最大祝福值。
示例1
输入
复制
3 3 1
0 1 2 3 4 5 4 3 2 1
000
000
000
说明
地板上的格子都是
,因为
,不能白嫖到祝福值。