제출 #1291858

#제출 시각아이디문제언어결과실행 시간메모리
1291858Jawad_Akbar_JJMiners (IOI07_miners)C++20
0 / 100
118 ms1344 KiB
#include <iostream> using namespace std; int dp[3][30][30], Ans; int get(int num, int c){ int a = num / 4, b = num % 4; if (a == 3 and b == 3) return 1; if (a == 3) return 1 + (b != c); if (a == b and b == c) return 1; if (a == b or b == c or a == c) return 2; return 3; } int main(){ int n; string s; cin>>n>>s; for (int i=0;i<2;i++){ for (int j=0;j<16;j++) for (int k=0;k<16;k++) dp[i][j][k] = -1e9; } dp[0][15][15] = 0; for (int i=1;i<=n;i++){ int c = (s[i-1] == 'M') + (s[i-1] == 'B') * 2; cout<<i<<endl; for (int j=0;j<16;j++){ for (int k=0;k<16;k++){ if (dp[0][j][k] >= 0){ dp[1][j % 4 * 4 + c][k] = max(dp[1][j % 4 * 4 + c][k], dp[0][j][k] + get(j, c)); dp[1][j][k % 4 * 4 + c] = max(dp[1][j][k % 4 * 4 + c], dp[0][j][k] + get(k, c)); } } } for (int j=0;j<16;j++){ for (int k=0;k<16;k++){ Ans = max(Ans, dp[1][j][k]); dp[0][j][k] = dp[1][j][k], dp[1][j][k] = -1e9; } } } cout<<Ans<<'\n'; }
#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...