This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |