给定一个长度为 n 的数组 a 以及一个长度为 n 的仅由字符 ′0′ 和 ′1′ 组成的字符串 s。每个位置 i 对应一个操作符:
我们可以将数组切分为至多 k 块(也就是最多有 k−1 个切割点)。对于数组中每个位置 i,若其所在块的编号为 j(块的编号从 1 开始),则该位置的贡献为 $
小红有一个长度为n的数组a和一个度为n的字符串s。她最多可以将数组切割成1块。
定义数组的权值为所有元素的权值之和。对于数组中的第1个元素,其权值计算方式为:op(i)×(a+j)
op(i)的值取决手字符串s的第i个字符:
若si='1',则op(i)=1
若si='0’,则op(i)=−1
j表示ai所在的块的编号(从1开始)
小红想要通过合理的切割方式,使得数组的总权值最大,请你帮她计算出可能的最大权值。
第一行包含两个正整数n和k,表示数组的长度和数组最多的块数。
第二行包含n个整数a1,a2,...an,表示数组a
第三行包含一个长度为n的字符串s,仅由字符‘0’和'1'组成
1≦k≦n
2≤n≤105
1≤ai≤109
输出一个整数。表示数组可能的最大权值。
输入
4 2
1 2 3 4
1001
输出
1
一种最优的切割方案是将数组切成[1,2,3]和[4]两块。