神秘的字符串
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 32 M,其他语言64 M
64bit IO Format: %lld

题目描述

        某华大学的漂亮小姐姐Anna得到了一个字符串s,她很好奇的看着这个字符串,然而,这个字符串有点害羞。这下,Anna更好奇了。

        在Anna好奇的大眼睛注视下,字符串s偏着脸说出了它的秘密。

        “我们每一个字符串都有它的价值。嗯,这个价值有它衡量的标准。我是一个只含有0,1的字符串,我的衡量标准是可以删除一段连续的0或者1,删除后,剩下的拼接到一起(举个栗子,011110,如果我删除第3、4位连续的两个1后,就剩下0110),如果我删除的长度为a,我可以得到va的价值。我可以删除任意次数,直到全部删完。现在,我的秘密就是所有操作后得到的价值的总和的最大值。你,知道我的秘密是多少吗?”

        “好像有点难啊?”Anna歪着脑袋说。

输入描述:

    输入包括三行。
    第一行包括一个整数n(表示这个字符串的长度)。
    第二行是这个字符串。(保证只由0,1组成且只有n个字符)。
    第三行,包括n个整数v1,v2,…,vi,vi+1,…,vn。vi表示删除i位连续的字符会得到vi大小的价值。(0<n<=100,0<vi<=1000000000)。

输出描述:

每组测试数据输出一行,为可以得到的最大价值。
示例1

输入

复制
7
1101001
3 4 9 100 1 2 3

输出

复制
109
示例2

输入

复制
5
10101
3 10 15 15 15

输出

复制
23
示例3

输入

复制
5
11111
100 1 1 1 1

输出

复制
500

说明

对于样列三,我们没有必要删除连续两位或者三位,四位,五位的1(虽然我们可以这么做)。因为我将五个1分开删除我们就可以得到最大的价值。