#include <bits/stdc++.h>
using namespace std;
//#define int long long
#define ll long long
#define endl '\n'
#define FOR(N) for(int i = 0; i<N; i++)
#define F first
#define S second
#define VI vector<int>
#define PII pair<int,int>
signed main() {
cin.tie(0); ios::sync_with_stdio(false);
int N;
string in;
cin >> N;
cin >> in;
vector<int> S(N);
FOR(N) {
if (in[i] == 'M') S[i] = 1;
else if (in[i] == 'B') S[i] = 2;
else S[i] = 3;
}
vector<short> plus(4);
vector<vector<vector<vector<vector<int>>>>> dp(2, vector<vector<vector<vector<int>>>>(4, vector<vector<vector<int>>>(4, vector<vector<int>>(4, vector<int>(4, 0))))); // i, m1prf1, m1prf2, m2prf1, m2prf2
for(int i = N-1; i >= 0; i--) {
for(int f1 = 0; f1 < 4; f1++) {
for(int f2 = 0; f2 < 4; f2++) {
for(int f3 = 0; f3 < 4; f3++) {
for(int f4 = 0; f4 < 4; f4++) {
plus = {0,0,0,0};
plus[f1] = 1;
plus[f2] = 1;
plus[S[i]] = 1;
int plus1 = plus[1] + plus[2] + plus[3];
plus = {0,0,0,0};
plus[f3] = 1;
plus[f4] = 1;
plus[S[i]] = 1;
int plus2 = plus[1] + plus[2] + plus[3];
dp[i % 2][f1][f2][f3][f4] = max(dp[(i + 1) % 2][S[i]][f1][f3][f4] + plus1, dp[(i + 1) % 2][f1][f2][S[i]][f3] + plus2);
//cout << i << ' ' << f1 << ' ' << f2 << ' ' << f3 << ' ' << f4 << ' ' << dp[i % 2][f1][f2][f3][f4] << endl;
}
}
}
}
dp[(i+1) % 2].assign(4,vector<vector<vector<int>>>(4, vector<vector<int>>(4, vector<int>(4, 0))));
}
cout << dp[0][0][0][0][0];
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |