Submission #1314924

#TimeUsernameProblemLanguageResultExecution timeMemory
1314924exoworldgdMiners (IOI07_miners)C++20
100 / 100
317 ms644 KiB
#include <bits/stdc++.h>
#define int long long
#define exoworldgd cin.tie(0)->sync_with_stdio(0),cout.tie(0)
using namespace std;
int get(char c) {return c=='M'?1:c=='F'?2:c=='B'?3:0;}
int cnt(int a, int b, int c) {
    set<int> s;
    if (a > 0) s.insert(a);
    if (b > 0) s.insert(b);
    if (c > 0) s.insert(c);
    return s.size();
}
int dp[2][4][4][4][4],n,curr,nxt,ans=0;
signed main(void) {
    exoworldgd;
    string s;
    cin >> n >> s, memset(dp,-1,sizeof(dp)),dp[0][0][0][0][0] = 0;
    for (char c : s) {
        curr = get(c),nxt = 1-nxt,memset(dp[nxt],-1,sizeof(dp[nxt]));
        for (int j = 0; j < 4; j++) {
            for (int k = 0; k < 4; k++) {
                for (int l = 0; l < 4; l++) {
                    for (int m = 0; m < 4; m++) {
                        if (dp[nxt^1][j][k][l][m] == -1) continue;
                        dp[nxt][k][curr][l][m] = max(dp[nxt][k][curr][l][m],dp[nxt^1][j][k][l][m]+cnt(j,k,curr)), dp[nxt][j][k][m][curr] = max(dp[nxt][j][k][m][curr],dp[nxt^1][j][k][l][m]+cnt(l,m,curr));
                    }
                }
            }
        }
    }
    for (int j = 0; j < 4; j++) for (int k = 0; k < 4; k++) for (int l = 0; l < 4; l++) for (int m = 0; m < 4; m++) if (dp[nxt][j][k][l][m]^-1) ans = max(ans,dp[nxt][j][k][l][m]);
    cout << ans;
}
#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...