Submission #982944

#TimeUsernameProblemLanguageResultExecution timeMemory
982944LOLOLOMiners (IOI07_miners)C++17
100 / 100
988 ms101128 KiB
#include <bits/stdc++.h> #define ll long long using namespace std; #define f first #define s second #define pb push_back #define ep emplace #define eb emplace_back #define lb lower_bound #define ub upper_bound #define all(x) x.begin(), x.end() #define rall(x) x.rbegin(), x.rend() #define uniquev(v) sort(all(v)), (v).resize(unique(all(v)) - (v).begin()) #define mem(f,x) memset(f , x , sizeof(f)) #define sz(x) (int)(x).size() #define __lcm(a, b) (1ll * ((a) / __gcd((a), (b))) * (b)) #define mxx *max_element #define mnn *min_element #define cntbit(x) __builtin_popcountll(x) #define len(x) (int)(x.length()) const int N = 1e5 + 10; int type[N]; int dp[N][16][16], id[16][16]; pair <int, int> f[16]; void maximize(int& a, int b) { if (a < b) a = b; } int cal(pair <int, int> a, int b) { vector <bool> used(4, 0); used[a.f] = 1; used[a.s] = 1; used[b] = 1; int ans = 0; for (int j = 1; j < 4; j++) ans += used[j]; return ans; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n; cin >> n; int cnt = 0; for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { id[i][j] = cnt; f[cnt] = {i, j}; cnt++; } } for (int i = 1; i <= n + 1; i++) { for (int j = 0; j < 16; j++) { for (int k = 0; k < 16; k++) { dp[i][j][k] = -1e8; } } } for (int i = 1; i <= n; i++) { char c; cin >> c; if (c == 'M') { type[i] = 1; } if (c == 'F') { type[i] = 2; } if (c == 'B') { type[i] = 3; } } dp[1][0][0] = 0; int ans = 0; for (int i = 1; i <= n; i++) { for (int j = 0; j < 16; j++) { for (int k = 0; k < 16; k++) { pair <int, int> A = f[j], B = f[k]; int nxt = type[i]; maximize(dp[i + 1][id[A.s][nxt]][k], dp[i][j][k] + cal(A, nxt)); maximize(dp[i + 1][j][id[B.s][nxt]], dp[i][j][k] + cal(B, nxt)); } } } for (int i = 0; i < 16; i++) { for (int j = 0; j < 16; j++) maximize(ans, dp[n + 1][i][j]); } cout << ans << '\n'; return 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...