c++翻转字符, 各位求帮助 回答·一下吧

Alice 和 Bob 正在玩一款游戏。

初始有一个长度为 n 字符串,仅包括 A 和 B 两种字符,对于每个位置上的字符,对应一个能量点数 pi,若字符串中第 i 个位置为 A,则给予 Alice pi​ 点能量;若为 B,则给予 Bob pi​ 点能量。

Bob 有一次机会,可以选择某个前缀或后缀进行翻转(指原本的 A 变为 B,B 变为 A),当然也可以不选。求 Bob 进行翻转操作后所能得到的最大能量。

输入
第一行仅有一个正整数 n (1<=n<=5*10^5)
第二行包含 n 个正整数 pi(1<=pi<=10^9)
​第三行包含一个长度为 n 的字符串(仅包含字符 A 和 B)。
输出
仅一个正整数 a​,表示字符串中的价值总和的最大值。
输入样例
5
1 2 3 4 5
ABABA
输出样例
11