Submission #216115

#TimeUsernameProblemLanguageResultExecution timeMemory
216115anmichiMiners (IOI07_miners)C++17
84 / 100
1592 ms896 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; } set<int>x,y; rep(i,n){ rep(c,4){ rep(d,4){ if(c==3&&d!=3)continue; rep(e,4){ rep(f,4){ if(e==3&&f!=3)continue; x.clear(); y.clear(); if(c!=3)x.insert(c); if(d!=3)x.insert(d); x.insert(a[i]); if(e!=3)y.insert(e); if(f!=3)y.insert(f); y.insert(a[i]); chmax(dp[(i+1)%2][a[i]][c][e][f],dp[i%2][c][d][e][f]+(int)x.size()); chmax(dp[(i+1)%2][c][d][a[i]][e],dp[i%2][c][d][e][f]+(int)y.size()); } } } } } 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...