简单题
贪心
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 1e5 + 10;
int n;
char s[N];
int e[N];
int main(){
scanf("%d", &n);
scanf("%s", s + 1);
for(int i=1;i<=n;i++) scanf("%d",&e[i]);
int h_start,h_end,g_start,g_end;
for(int i=1;i<=n;i++){
if(s[i] == 'H'){
h_start = i;
break;
}
}
for(int i=1;i<=n;i++){
if(s[i] == 'G'){
g_start = i;
break;
}
}
for(int i=n;i>=1;i--){
if(s[i] == 'H'){
h_end = i;
break;
}
}
for(int i=n;i>=1;i--){
if(s[i] == 'G'){
g_end = i;
break;
}
}
int ans = 0;
if(e[h_start] >= h_end && e[g_start] >= g_end) ans++;
for(int i=1;i<=h_start;i++){
if(s[i] == 'G' && e[i] >= h_start){
ans++;
}
}
for(int i=1;i<=g_start;i++){
if(s[i] == 'H' && e[i] >= g_start){
ans++;
}
}
printf("%d",ans);
return 0;
}