有
K.括号的类型,每个类型都有自己的开口支架和关闭支架。我们假设第一对用数字1表示
K.+1那第二个是2和
K.+2那等等。因此,开口括号由
1那2那......那K.那并且相应的关闭括号表示
K.+1那K.+2那......那2K.那分别。
一些与元素的序列
1那2那......那2K.形成良好的序列,而其他人则没有。如果我们可以以下列的方式匹配或配对相同类型的打开括号,则序列是良好的括号。
- 每个支架都配对。
- 在每个匹配的对中,开口支架发生在关闭支架之前。
- 对于匹配对,任何其他匹配的对都是完全在它们之间或外部之间的。
在这个问题中,你被给出了一系列长度的括号
N:
B.[1]那......那B.[N],每个人
B.[一世]是一个括号之一。您也给出了一个值数组:
V.[1]那......那V.[N]。
在值阵列中的所有子序列中,使得B阵列中的相应括号子序列是一个良好的括号序列,您需要找到最大总和。
任务:解决上述问题这输入。
输入格式
一行,包含
(2×N+2)空间分隔整数。第一个整数表示
N。下一个整数是
K.。下一个
N整数是
V.[1]那。。。那V.[N]。最后
N整数是
B.[1]那。。。那B.[N]。
约束
-
1≤.K.≤.7.
-
-10.6.≤.V.[一世]≤.10.6., 对全部
一世
-
1≤.B.[一世]≤.2K., 对全部
一世
说明的例子
对于这里讨论的例子,让我们假设
K.=2。序列1,1,3不是很好的,因为两个1不能配对之一。序列3,1,3,1,1不是很好地括起来,因为没有办法将第二1匹配到在其之后发生的闭合支架。序列1,2,3,4不是很好地括起来,作为匹配的对2,4既不完全在匹配的对1,3也不完全在其外部。也就是说,匹配的对不能重叠。序列1,2,4,3,1,3是均匀的。我们将第一个1与第3个,2,第二个与第二个1匹配,符合第二个3,满足所有3条条件。如果使用分别使用[,],}而不是1,2,3,4重写这些序列,这将非常清晰。
认为
N=6.那K.=3.那和价值观
V.和
B.如下面所述:然后,位置1,3中的括号形成良好的括号序列(1,4),并且这些位置中的值的总和为2(4 +(-2)= 2)。位置1,3,4,5的支架形成良好的括号序列(1,4,2,5),并且这些位置的值的总和为4.最后,位置2,4,5中的括号,6形成良好的括号序列(3,2,5,6),并且这些位置中的值的总和为13.位置1,2,5,6的值的总和为16,但是这些位置中的括号(1,3,5,6)不形成均匀括号的序列。您可以检查括号内括号序列的位置的最佳总和是13。