#include using namespace std; #define fasst ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL) #define ll long long #define FOR(n) for(i = 0; i < (n); i++) #define forn(i, n, m) for(int i = (n); (n) < (m) ? i < (m) : i > (m); (n) < (m) ? ++i : --i) #define all(a) a.begin(), a.end() #define inp(a, n) for(i = 0; i < (n); i++) cin >> (a)[i]; #define oup(a, n) for(i = 0; i < (n); i++) cout << (a)[i] << ' '; #define vi vector #define vii vector> #define vvi vector> #define vll vector #define endl '\n' const int INF = 0x3f3f3f3f; void solve(int testc){ int i, j, k, l, m, n; cin >> n; string str, str1; cin >> str; vi vec(n); FOR(n)cin >> vec[i]; cin >> m; vi arr(m); FOR(m)cin >> arr[i]; vi pref(n + 1, 0), enem(n + 1, 0); FOR(n){ pref[i + 1] = pref[i] + vec[i]; } FOR(n){ if(str[i] == 'E')j = 1; else j = 0; enem[i + 1] = enem[i] + j; } k = 0; FOR(m){ k = 0; for(j = 1; j < n + 1; j++){ int left = j, right = n, mid; while(left <= right){ mid = left + (right - left) / 2; if(pref[mid] - pref[j - 1] <= arr[i]){ k = max(k, enem[mid] - enem[j - 1]); left = mid + 1; // cout << k << " "; } else{ right = mid - 1; } } } cout << k << " "; } return; } int main(){ fasst; int t = 1, testc = 1; //cin >> t; while(t--){ solve(testc); cout << '\n'; } return 0; }