//Bismillah #include using namespace std; #define nl cout< #define inf 1e17 #define MOD 1000000007 #define ai(n) array #define ac(n) array #define vi vector #define vb vector #define vc vector #define vs vector #define vpi vector> #define vvi vector> #define mp map #define pq priority_queue #define pqmin priority_queue, greater> #define pqminpair priority_queue, vector>, greater>> #define f(i,s,e) for(int i=s;i=e;i--) #define printv(vec) for(auto &value: vec) cout<>value; #define pb push_back #define pp pop_back #define all(s) s.begin(), s.end() #define sa(vec) sort(vec.begin(), vec.end()) #define sd(vec) sort(vec.begin(), vec.end(), [](int a, int b){return a>b;}) #define fastnuces ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int t = 1; int test=0; void solve(){ int n; cin>>n; string s; cin>>s; vi end(n); inputv(end); vi pre(n, 0), cnt(n); f(i, 0, n){ pre[i] = end[i]; if(i) pre[i]+=pre[i-1]; cnt[i] = (s[i]=='E'); if(i) cnt[i]+=cnt[i-1]; } // printv(cnt);nl; int q; cin>>q; vi query(q); inputv(query); for(auto &value : query){ int maxi = 0; // nl f(i,0, n){ auto it = upper_bound(pre.begin() + i, pre.end(), value + (i ? pre[i-1] : 0)); if(it==pre.begin() + i) continue; it--; int idx = it - (pre.begin()); maxi = max(maxi, cnt[idx] - (i?cnt[i-1]:0)); // cout<> t; while (t--) { test++; solve(); nl } return 0; }