Submission #1255270

#TimeUsernameProblemLanguageResultExecution timeMemory
1255270kunzaZa183Miners (IOI07_miners)C++20
100 / 100
678 ms1216 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...