挑战道馆
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

(题面和图片仅供参考,截至出题时间,剧里 10 岁的小智已然夺冠,宝可梦游戏也已经到了第九世代)



你正在玩某个版本的精灵宝可梦,你来到了一个有特殊挑战的道馆,当然来之前你很熟悉道馆的规则:

你进入道馆时,在屋子 A 的最左上角,而道馆馆主在另一间屋子 B,屋子 B 门在屋子 A 最右下角。游戏设定为游戏的主角每次移动只能上下左右移动,且只能走一整个格子。屋子 A 可移动范围是一个矩形(nm 列格子),有着特殊的魔力——你每次只能向右或向下移动一格,向左、向上都会被奇怪的屏障墙拦住。道馆地板很特殊,地板的每个格子上都标有一个数字 0-9,这意味着,当你站在该格子上时,可以选择消耗携带的一个宝可梦的活力值(每个宝可梦满活力值,且都大于 9),以获得格子的祝福,消耗的活力值就是格子上的数字,道馆规则标明了每种数字格子能够获得的祝福值 s_0,s_1,\cdots,s_9。在你进门的时候,道馆替你保管了所有道具,只给了你 k 个恢复活力值的道具,每个道具可以恢复一个宝可梦 1 点活力值。

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

输入描述:

第一行包含三个正整数 n,m,k1 \leq n,m,k \leq 50)。 
第二行包含十个正整数 s_0,s_1, \dots,s_90 \leq s_i \leq 50)。 
 接下来 n 行,每行一个长度为 m 的字符串,表示屋子 A 地板格子上的数字。保证只会出现数字字符。

输出描述:

输出一个数,表示在可以不减少宝可梦活力值的条件下,能得到的最大祝福值
示例1

输入

复制
3 3 1
0 1 2 3 4 5 4 3 2 1
000
000
000

输出

复制
0

说明

地板上的格子都是 0,因为 s_0=0 ,不能白嫖到祝福值。
示例2

输入

复制
3 4 30
0 1 2 3 4 5 4 3 2 1
0123
4567
8905

输出

复制
21

说明

沿着路径 0\rightarrow 4\rightarrow 5\rightarrow 6 \rightarrow 7\rightarrow 5 到达右下角,在每个格子上都选择获得格子上的祝福值,总共花费 0+4+5+6+7+5=27 个道具,获得 0+4+5+4+3+5=21 点祝福值,可以证明这是最优解。
示例3

输入

复制
3 4 10
0 1 2 3 4 5 4 3 2 1
0123
4567
8905

输出

复制
10

说明

三种方案:① 0\rightarrow 1\rightarrow 2\rightarrow 3\rightarrow 7\rightarrow 5 ,获得格子 2,3,5 的祝福值;② 0\rightarrow 4\rightarrow 5\rightarrow 6\rightarrow 7 \rightarrow5,获得两个格子 5 的祝福值;③ 0\rightarrow 1\rightarrow 5 \rightarrow 6 \rightarrow 7\rightarrow 5,依然选择获得两个格子 5 的祝福值。三种方案都会花光所有道具