哪里错了捏
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1e5 + 10;
int dp[N];
int n, m, cnt;
int p[25];
string s;
signed main(){
cin >> n;
for(int i = 1; i <= n; i ++) cin >> p[i];
cin >> m;
cin >> s;
for(int i = 2; i < s.size(); i ++)
{
if(s[i] != 'c' && s[i] != 'b' && s[i] != 'a') cnt = 0;
if(s[i] == 'c' && s[i - 1] != 'b') cnt = 0;
if(s[i] == 'b' && s[i - 1] != 'a') cnt = 0;
if(s[i] == 'c' && s[i - 1] == 'b' && s[i - 2] == 'a') cnt ++;
dp[i] = dp[i - 1];
for(int j = 1; j <= cnt && j <= n; j ++)
{
dp[i] = max(dp[i], dp[i - j * 3] + p[j]);
}
}
int res = s.size() - 1;
cout << dp[res];
return 0;
}