#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 4;
int n, dp[maxn][4][4][4][4];
string s;
int get(char c) {
if (c == 'M') return 1;
if (c == 'F') return 2;
if (c == 'B') return 3;
}
int get(int a, int b, int c) {
vector<int> vec;
vec.push_back(a);
vec.push_back(b);
vec.push_back(c);
sort(vec.begin(), vec.end());
int res = 1;
for (int i = 0; i < 2; i++)
if (vec[i] != vec[i + 1] && vec[i]) res++;
return res;
}
int Solve(int i, int f1, int f2, int s1, int s2) {
if (i == n) return 0;
if (dp[i][f1][f2][s1][s2] != -1) return dp[i][f1][f2][s1][s2];
dp[i][f1][f2][s1][s2] = max(Solve(i + 1, get(s[i]), f1, s1, s2) + get(get(s[i]), f1, f2),
Solve(i + 1, f1, f2, get(s[i]), s1) + get(get(s[i]), s1, s2));
return dp[i][f1][f2][s1][s2];
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
if (fopen(".INP", "r")) {
freopen(".INP", "r", stdin);
freopen(".OUT", "w", stdout);
}
cin >> n >> s;
memset(dp, -1, sizeof dp);
cout << Solve(0, 0, 0, 0, 0);
// cout << dp[5][2][3][3][2];
}
Compilation message (stderr)
miners.cpp: In function 'int get(char)':
miners.cpp:13:1: warning: control reaches end of non-void function [-Wreturn-type]
13 | }
| ^
miners.cpp: In function 'int main()':
miners.cpp:40:24: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
40 | freopen(".INP", "r", stdin);
| ~~~~~~~^~~~~~~~~~~~~~~~~~~~
miners.cpp:41:24: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
41 | freopen(".OUT", "w", stdout);
| ~~~~~~~^~~~~~~~~~~~~~~~~~~~~
# | 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... |