제출 #974800

#제출 시각아이디문제언어결과실행 시간메모리
974800marinalucaMiners (IOI07_miners)C++17
100 / 100
37 ms1112 KiB
#include <bits/stdc++.h> #pragma GCC optimize ("O4") #pragma GCC optimize ("fast-math") #pragma GCC optimize ("unroll-loops") using namespace std; #define int long long #define ll long long #define xx first #define yy second #define all (x) begin(x), end(x) int n; const int NMAX = 1e5; const int VMAX = 3; int v[NMAX + 1]; int dp[VMAX][VMAX + 1][VMAX + 1][VMAX + 1][VMAX + 1]; int eg (int a, int b, int c) { int k = 0; for (int i = 1; i <= 3; ++ i){ if ((a == i) || (b == i) || (c == i)) k ++; } return k; } signed main(void){ ios_base::sync_with_stdio(false); cin.tie(nullptr); cin >> n; for (int i = 1; i <= n; ++ i){ char s; cin >> s; if (s == 'M') v[i] = 1; if (s == 'F') v[i] = 2; if (s == 'B') v[i] = 3; } int x = 1, y = 0; for (int i = n; i >= 0; -- i){ swap (x, y); for (int j = 0; j <= VMAX; ++ j){ for (int k = 0; k <= VMAX; ++ k){ for (int l = 0; l <= VMAX; ++ l) { for (int m = 0; m <= VMAX; ++ m){ dp[x][j][k][l][m] = max (dp[y][k][v[i]][l][m] + eg(j, k, v[i]), dp[y][j][k][m][v[i]] + eg(l, m, v[i])); } } } } } cout << dp[x][0][0][0][0]; return 0 ^ 0; }
#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...