Submission #158250

#TimeUsernameProblemLanguageResultExecution timeMemory
158250brcodeMiners (IOI07_miners)C++14
100 / 100
1336 ms245752 KiB
#include <iostream> #include <set> using namespace std; const int MAXN = 2e5+5; int dp[MAXN][5][5][5][5]; int arr[MAXN]; int query(int i,int j,int k){ set<int> s1; if(i){ s1.insert(i); } if(j){ s1.insert(j); } if(k){ s1.insert(k); } // cout<<i<<" "<<j<<" "<<k<<" "<<s1.size()<<endl; return s1.size(); } int main(){ int n; cin>>n; string s; cin>>s; for(int i=1;i<=n;i++){ if(s[i-1] == 'M'){ arr[i] = 1; }else if(s[i-1] == 'F'){ arr[i] = 2; }else{ arr[i] = 3; } } for(int i=0;i<=n;i++){ for(int j=0;j<=3;j++){ for(int k=0;k<=3;k++){ for(int l=0;l<=3;l++){ for(int m=0;m<=3;m++){ dp[i][j][k][l][m] = -1e9; } } } } } dp[0][0][0][0][0] = 0; for(int i=1;i<=n;i++){ for(int j=0;j<=3;j++){ for(int k=0;k<=3;k++){ for(int l=0;l<=3;l++){ for(int m=0;m<=3;m++){ if(dp[i-1][j][k][l][m]!=-1e9){ dp[i][arr[i]][j][l][m] = max(dp[i][arr[i]][j][l][m],dp[i-1][j][k][l][m]+query(arr[i],j,k)); dp[i][j][k][arr[i]][l] = max(dp[i][j][k][arr[i]][l],dp[i-1][j][k][l][m]+query(arr[i],l,m)); // cout<<i<<" "<<arr[i]<<" "<<j<<" "<<l<<" "<<m<<" "<<dp[i][arr[i]][j][l][m]<<endl; //cout<<i<<" "<<j<<" "<<k<<" "<<arr[i]<<" "<<l<<" "<<dp[i][arr[i]][j][l][m]<<endl; } } } } } } int ans = 0; for(int j=0;j<=3;j++){ for(int k=0;k<=3;k++){ for(int l=0;l<=3;l++){ for(int m=0;m<=3;m++){ ans = max(ans,dp[n][j][k][l][m]); } } //ans = max(ans,dp[n][j][k]); } } cout<<ans<<endl; }
#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...