人生重开模拟器
题号:NC229636
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

这垃圾人生一秒也不想呆了,小咸鱼最近迷恋上了"人生重开模拟器",这是一款文字解密玩法的游戏。
玩家需要在开局从n个天赋中选择出x个天赋,每个天赋都可获得对应的属性点,所选天赋的属性点之和为s,s个属性点可以自由分配给m个属性中,给第i个属性分配j个属性点时,可获得P(i,j)点能力值,现在小咸鱼想知道他能最多得到多少点能力值。

输入描述:

本题为多组测试数据,第一行输入一个整数T(),表示测试数据的组数。

对于每组数据,第一行输入三个整数n,x,m(),代表玩家需要从n个天赋中选出x个天赋,所获得属性点分配给m个属性。

第二行依次输入n个正整数 v_1v_2,... ,v_n),代表每个天赋对应的属性点,所选天赋的属性点之和记为s。

接下来输入m行,每行输入s个正整数 c_1c_2,... ,c_s),代表给当前属性加i个属性点可获得c_i点能力值。

输出描述:

对于每组测试数据,一行输出一个整数代表小咸鱼最多得到的能力值。如果给某属性加的属性点为0,那通过此属性所得到能力值为0。
示例1

输入

复制
1
10 3 2
1 2 3 1 1 2 2 1 0 1
1 1 2 3 1 1 2
1 3 2 1 2 2 2

输出

复制
6