제출 #1314924

#제출 시각아이디문제언어결과실행 시간메모리
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...