#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
#define sp <<" "<<
#define endl "\n"
#define rep(i, a, b) for (ll i = a; i < b; i++)
const ll INF = 1e18;
const int MAXN = 1e5+5;
ll dp[MAXN][4][4][4][4];
inline ll calc(int a, int b, int c) {
set<int> amt;
if (a) amt.insert(a);
if (b) amt.insert(b);
if (c) amt.insert(c);
return amt.size();
}
void solve() {
int n; cin >> n;
string s; cin >> s;
map<char, int> rev;
rev['M'] = 1, rev['F'] = 2, rev['B'] = 3;
fill_n(&dp[0][0][0][0][0], MAXN*4*4*4*4, -INF);
dp[0][0][0][0][0] = 0;
rep(i,0,n) {
int tng = rev[s[i]];
rep(m,0,2) rep(l1,0,4) rep(l2,0,4) rep(r1,0,4) rep(r2,0,4) {
auto cand = dp[i][l1][l2][r1][r2];
if (cand == -INF) continue;
set<int> amt;
if (m == 0) {
ll coal = calc(tng, l1, l2);
dp[i+1][tng][l1][r1][r2] = max(dp[i+1][tng][l1][r1][r2], cand + coal);
} else {
ll coal = calc(tng, r1, r2);
dp[i+1][l1][l2][tng][r1] = max(dp[i+1][l1][l2][tng][r1], cand + coal);
}
}
}
ll ans = 0;
rep(l1,0,4) rep(l2,0,4) rep(r1,0,4) rep(r2,0,4) {
ans = max(ans, dp[n][l1][l2][r1][r2]);
}
cout << ans << endl;
}
signed main() {
cin.tie(0);
ios_base::sync_with_stdio(false);
int t = 1;
// cin >> t;
while (t--)
solve();
}
# | 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... |