#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
string s;
cin >> s;
vector<int> vii;
for (auto a : s)
if (a == 'M')
vii.push_back(0);
else if (a == 'B')
vii.push_back(1);
else if (a == 'F')
vii.push_back(2);
const int states = 10;
map<vector<int>, map<vector<int>, int>> mmvii;
mmvii[{}][{}] = 0;
auto helper = [&](vector<int> vi, int x) -> pair<vector<int>, int> {
if (vi.empty()) {
return {{x}, 1};
}
if (vi.size() == 1) {
if (vi.back() == x)
return {vi, 1};
vi.push_back(x);
return {vi, 2};
}
if (vi[0] == x && vi[1] == x) {
return {{x, x}, 1};
}
if (vi[0] != x && vi[1] != x && vi[0] != vi[1]) {
return {{vi[1], x}, 3};
}
if (vi[0] == x) {
return {{vi[1], x}, 2};
}
if (vi[1] == x) {
return {{x, x}, 2};
}
if (vi[0] == vi[1]) {
return {{vi[1], x}, 2};
}
};
for (int i = 0; i < n; i++) {
map<vector<int>, map<vector<int>, int>> tmp;
for (auto &[vi, b] : mmvii) {
for (auto &[vi2, val] : b) {
auto [vi3, add] = helper(vi, vii[i]);
auto &num = tmp[vi3][vi2];
num = max(num, val + add);
auto [vi4, add1] = helper(vi2, vii[i]);
auto &num2 = tmp[vi][vi4];
num2 = max(num2, val + add1);
}
}
tmp.swap(mmvii);
}
int maxi = 0;
for (auto &[vi, b] : mmvii) {
for (auto &[vi2, val] : b) {
maxi = max(maxi, val);
}
}
cout << maxi << "\n";
}
Compilation message (stderr)
miners.cpp: In lambda function:
miners.cpp:52:3: warning: control reaches end of non-void function [-Wreturn-type]
52 | };
| ^
# | 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... |