結果
問題 | No.2629 A replace B replace C |
ユーザー |
|
提出日時 | 2024-02-16 22:29:13 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 10 ms / 2,000 ms |
コード長 | 1,002 bytes |
コンパイル時間 | 875 ms |
コンパイル使用メモリ | 86,408 KB |
実行使用メモリ | 6,824 KB |
最終ジャッジ日時 | 2024-09-28 21:03:02 |
合計ジャッジ時間 | 2,998 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 5 |
other | AC * 61 |
ソースコード
#include <iostream> #include <string> #include <deque> using namespace std; int main () { int N; cin >> N; string S, T; cin >> S >> T; // 一致しないものがあれば前からどうにかするしかない。 bool ok = true; deque<int> que_A, que_B; for (int i = 0; i < N; i++) { if (S[i] == T[i]) continue; if (T[i] < S[i]) { ok = false; break; } if (S[i] == 'A') { if (T[i] == 'B') que_A.push_back(i); if (T[i] == 'C') que_A.push_front(i); } if (S[i] == 'B') que_B.push_back(i); } // 頑張る while (!que_A.empty() && !que_B.empty()) { auto A_idx = que_A.front(); que_A.pop_front(); auto B_idx = que_B.front(); que_B.pop_front(); if (T[A_idx] == 'C') que_B.push_back(A_idx); } if (!que_A.empty() || !que_B.empty()) ok = false; if (ok) { cout << "Yes\n"; } else { cout << "No\n"; } }