結果
問題 |
No.3299 K-th MMA String
|
ユーザー |
|
提出日時 | 2025-10-05 13:58:54 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,638 bytes |
コンパイル時間 | 1,881 ms |
コンパイル使用メモリ | 203,288 KB |
実行使用メモリ | 15,488 KB |
最終ジャッジ日時 | 2025-10-05 13:59:02 |
合計ジャッジ時間 | 2,909 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 10 WA * 10 |
ソースコード
#include <bits/stdc++.h> using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); int N,K; cin >> N >> K; int inf = 1001001; vector<vector<int>> dp0(N+1,vector<int>(8)),dp1 = dp0; dp0.at(N).at(7) = 1; for(int i=N-1; i>=0; i--){ for(int k=0; k<8; k++){ int to = k/2,to2 = k/2+4; dp0.at(i).at(to) += dp0.at(i+1).at(k); dp1.at(i).at(to) += dp1.at(i+1).at(k); if(to2 == 6) dp1.at(i).at(to2) += dp0.at(i+1).at(k); else dp0.at(i).at(to2) += dp0.at(i+1).at(k); dp1.at(i).at(to2) += dp1.at(i+1).at(k); dp0.at(i).at(to) = min(inf,dp0.at(i).at(to)); dp0.at(i).at(to2) = min(inf,dp0.at(i).at(to2)); dp1.at(i).at(to) = min(inf,dp1.at(i).at(to)); dp1.at(i).at(to2) = min(inf,dp1.at(i).at(to2)); } } string answer = ""; bool ok = false; for(int i=0; i<N; i++){ if(!ok){ int sum = 0; for(int k=0; k<4; k++) sum += dp1.at(i).at(k); int sum2 = sum+dp1.at(i).at(4)+dp1.at(i).at(5),sum3 = sum2+dp1.at(i).at(6); if(K > sum){ answer += 'M'; if(K > sum2 && K <= sum3) answer += "MA",i += 2,ok = true,K -= sum2; else K -= sum; } else answer += 'A'; } else{ int sum = 0; for(int k=0; k<4; k++) sum += dp1.at(i).at(k)+dp0.at(i).at(k); if(K > sum) K -= sum,answer += 'M'; else answer += 'A'; } } cout << answer << endl; }