Submission #216117

#TimeUsernameProblemLanguageResultExecution timeMemory
216117anmichiMiners (IOI07_miners)C++17
84 / 100
1587 ms896 KiB
#pragma GCC target ("avx2")
#pragma GCC optimization ("O3")
#pragma GCC optimization ("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;
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;
}

Compilation message (stderr)

miners.cpp:2:0: warning: ignoring #pragma GCC optimization [-Wunknown-pragmas]
 #pragma GCC optimization ("O3")
 
miners.cpp:3:0: warning: ignoring #pragma GCC optimization [-Wunknown-pragmas]
 #pragma GCC optimization ("unroll-loops")
#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...