Submission #216128

#TimeUsernameProblemLanguageResultExecution timeMemory
216128anmichiMiners (IOI07_miners)C++17
100 / 100
234 ms1024 KiB
#include <bits/stdc++.h> using namespace std; #define rep(i,n) for(int i=0;i<n;i++) template<class T>void chmax(T &a,T b){if(a<b)a=b;} template<class T>void chmin(T &a,T b){if(a>b)a=b;} constexpr int INF=1000000000; int main(){ int n,a[100010],dp[2][4][4][4][4]; string s; cin>>n>>s; rep(i,2){ rep(c,4){ rep(d,4){ rep(e,4){ rep(f,4){ dp[i][c][d][e][f]=-INF; } } } } } dp[0][3][3][3][3]=0; rep(i,n){ if(s[i]=='M')a[i]=0; if(s[i]=='F')a[i]=1; if(s[i]=='B')a[i]=2; } rep(i,n){ rep(c,4){ rep(d,4){ if(c==3&&d!=3)continue; rep(e,4){ rep(f,4){ int x[4]={0,0,0,0},y[4]={0,0,0,0}; x[c]++,x[d]++,x[a[i]]++; y[e]++,y[f]++,y[a[i]]++; int X=0,Y=0; rep(i,3){ X+=(bool)x[i]; Y+=(bool)y[i]; } chmax(dp[(i+1)%2][a[i]][c][e][f],dp[i%2][c][d][e][f]+X); chmax(dp[(i+1)%2][c][d][a[i]][e],dp[i%2][c][d][e][f]+Y); } } } } } int ans=0; rep(c,4){ rep(d,4){ if(c==3&&d!=3)continue; rep(e,4){ rep(f,4){ if(e==3&&f!=3)continue; chmax(ans,dp[n%2][c][d][e][f]); } } } } cout<<ans<<endl; 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...