Submission #1232481

#TimeUsernameProblemLanguageResultExecution timeMemory
1232481countlessMiners (IOI07_miners)C++20
100 / 100
476 ms201048 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef long double ld; #define sp <<" "<< #define endl "\n" #define rep(i, a, b) for (ll i = a; i < b; i++) const ll INF = 1e18; const int MAXN = 1e5+5; ll dp[MAXN][4][4][4][4]; inline ll calc(int a, int b, int c) { set<int> amt; if (a) amt.insert(a); if (b) amt.insert(b); if (c) amt.insert(c); return amt.size(); } void solve() { int n; cin >> n; string s; cin >> s; map<char, int> rev; rev['M'] = 1, rev['F'] = 2, rev['B'] = 3; fill_n(&dp[0][0][0][0][0], MAXN*4*4*4*4, -INF); dp[0][0][0][0][0] = 0; rep(i,0,n) { int tng = rev[s[i]]; rep(m,0,2) rep(l1,0,4) rep(l2,0,4) rep(r1,0,4) rep(r2,0,4) { auto cand = dp[i][l1][l2][r1][r2]; if (cand == -INF) continue; set<int> amt; if (m == 0) { ll coal = calc(tng, l1, l2); dp[i+1][tng][l1][r1][r2] = max(dp[i+1][tng][l1][r1][r2], cand + coal); } else { ll coal = calc(tng, r1, r2); dp[i+1][l1][l2][tng][r1] = max(dp[i+1][l1][l2][tng][r1], cand + coal); } } } ll ans = 0; rep(l1,0,4) rep(l2,0,4) rep(r1,0,4) rep(r2,0,4) { ans = max(ans, dp[n][l1][l2][r1][r2]); } cout << ans << endl; } signed main() { cin.tie(0); ios_base::sync_with_stdio(false); int t = 1; // cin >> t; while (t--) solve(); }
#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...