#include using namespace std; using namespace chrono; #if __has_include() #include using namespace atcoder; #endif int main() { int64_t n; string s; cin >> n >> s; vector as(n); for (auto &&a : as) { cin >> a; } vector r_sum(n + 1, 0), b_sum(n + 1, 0); for (int64_t i = 0; i < n; i++) { r_sum[i + 1] += r_sum[i]; b_sum[i + 1] += b_sum[i]; ((s[i] == 'R') ? r_sum : b_sum)[i + 1] += as[i]; } int64_t inf = (1LL << 60); int64_t ans = -inf; for (int64_t i = 0, d_min = 0, d_max = 0; i < n; i++) { ans = max({ans, abs(r_sum[i + 1] - b_sum[i + 1] - d_min), abs(r_sum[i + 1] - b_sum[i + 1] - d_max)}); d_min = min(d_min, r_sum[i + 1] - b_sum[i + 1]); d_max = max(d_max, r_sum[i + 1] - b_sum[i + 1]); } cout << ans << endl; return 0; }