Submission #970818

#TimeUsernameProblemLanguageResultExecution timeMemory
970818LudisseyMiners (IOI07_miners)C++17
100 / 100
795 ms444772 KiB
#include <bits/stdc++.h> #define sz(a) (int)a.size() #define all(x) (x).begin(), (x).end() using namespace std; vector<int> a; vector<vector<vector<vector<vector<int>>>>> memo; int calcExtra(int c, int prev, int prev2){ if(prev==3) return 1; else if(prev2==3){ if(prev!=c) return 2; else return 1; } if(c!=prev&&prev2!=c&&prev2!=prev) return 3; else if(c==prev&&prev2==c) return 1; else return 2; } int dp(int x, int prev, int prevprev, int prev2, int prevprev2){ if(x==sz(a)) return 0; if(memo[x][prev][prevprev][prev2][prevprev2]!=-1) return memo[x][prev][prevprev][prev2][prevprev2]; int mine1=dp(x+1,a[x], prev ,prev2,prevprev2)+calcExtra(a[x],prev,prevprev); int mine2=dp(x+1,prev,prevprev, a[x], prev2)+calcExtra(a[x],prev2,prevprev2); return memo[x][prev][prevprev][prev2][prevprev2]=max(mine1,mine2); } signed main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); int n; cin >> n; a.resize(n); memo.resize(n+1, vector<vector<vector<vector<int>>>>(4,vector<vector<vector<int>>>(4, vector<vector<int>>(4, vector<int>(4, -1))))); for (int i = 0; i < n; i++) { char c; cin >>c; if(c=='M') a[i]=0; else if(c=='B') a[i]=1; else if(c=='F') a[i]=2; } cout << dp(0,3,3,3,3)<<"\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...