# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
432790 |
2021-06-18T13:23:04 Z |
tengiz05 |
Miners (IOI07_miners) |
C++17 |
|
386 ms |
101184 KB |
#include <bits/stdc++.h>
constexpr int N = 100000;
int dp[N][4][4][4][4];
int main() {
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
int n;
std::cin >> n;
std::string s;
std::cin >> s;
std::vector<int> a(n);
for (int i = 0; i < n; i++) {
a[i] = std::string("MFB").find(s[i]) + 1;
}
memset(dp, 190, sizeof dp);
dp[0][0][a[0]][0][0] = 1;
dp[0][0][0][0][a[0]] = 1;
for (int p = 1; p < n; p++) {
for (int i = 0; i < 4; i++)
for (int j = 0; j < 4; j++)
for (int I = 0; I < 4; I++)
for (int J = 0; J < 4; J++)
dp[p][i][j][I][J] = dp[p - 1][i][j][I][J];
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
for (int I = 0; I < 4; I++) {
for (int J = 0; J < 4; J++) {
int cost;
if (i == 0 && j == 0) cost = 1;
else if (i == 0 || j == 0) cost = 1 + ((i ^ j) != a[p]);
else if (i == j && j == a[p]) cost = 1;
else if (i == j || j == a[p] || i == a[p]) cost = 2;
else cost = 3;
dp[p][j][a[p]][I][J] = std::max(dp[p][j][a[p]][I][J], dp[p - 1][i][j][I][J] + cost);
if (I == 0 && J == 0) cost = 1;
else if (I == 0 || J == 0) cost = 1 + ((I ^ J) != a[p]);
else if (I == J && J == a[p]) cost = 1;
else if (I == J || J == a[p] || I == a[p]) cost = 2;
else cost = 3;
dp[p][i][j][J][a[p]] = std::max(dp[p][i][j][J][a[p]], dp[p - 1][i][j][I][J] + cost);
}
}
}
}
}
int ans = 0;
for (int i = 0; i < 4; i++)
for (int j = 0; j < 4; j++)
for (int I = 0; I < 4; I++)
for (int J = 0; J < 4; J++)
ans = std::max(ans, dp[n - 1][i][j][I][J]);
std::cout << ans << "\n";
return 0;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
50 ms |
100444 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
48 ms |
100404 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
54 ms |
100388 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
54 ms |
100472 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
56 ms |
100436 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
54 ms |
100388 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
56 ms |
100428 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
79 ms |
100548 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
93 ms |
100560 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
134 ms |
100668 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
280 ms |
101060 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
386 ms |
101184 KB |
Output is correct |