제출 #216121

#제출 시각아이디문제언어결과실행 시간메모리
216121tatyamMiners (IOI07_miners)C++17
100 / 100
1241 ms101244 KiB
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,avx2,tune=native")
#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
#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;
 
signed main(){
    int n,a[100010],dp[100010][4][4][4][4];
    string s;
    cin>>n>>s;
    rep(i,n+1){
        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){
                rep(e,4){
                    rep(f,4)if(dp[i][c][d][e][f]!=-INF){
                        set<int>x,y;
                        x.insert(c);
                        x.insert(d);
                        x.insert(a[i]);
                        x.erase(3);
                        y.insert(e);
                        y.insert(f);
                        y.insert(a[i]);
                        y.erase(3);
                        chmax(dp[i+1][a[i]][c][e][f],dp[i][c][d][e][f]+(int)x.size());
                        chmax(dp[i+1][c][d][a[i]][e],dp[i][c][d][e][f]+(int)y.size());
                    }
                }
            }
        }
    }
    int ans=0;
    rep(c,4){
        rep(d,4){
            rep(e,4){
                rep(f,4){
                    chmax(ans,dp[n][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...