結果
| 問題 |
No.3323 岩井星式ジャンケン
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2025-11-01 16:04:56 |
| 言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,877 bytes |
| コンパイル時間 | 1,327 ms |
| コンパイル使用メモリ | 90,712 KB |
| 実行使用メモリ | 17,968 KB |
| 最終ジャッジ日時 | 2025-11-01 16:05:20 |
| 合計ジャッジ時間 | 2,622 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 20 WA * 6 |
ソースコード
#include <iostream>
#include <vector>
#include <array>
using node = std::array<int, 26>;
int main() {
int N, M;
std::cin >> N >> M;
std::vector<node> trie(1);
while (N--) {
std::string S;
std::cin >> S;
int curr = 0;
for (char c : S) {
if (trie[curr][c - 'A'] == 0) {
trie[curr][c - 'A'] = trie.size();
trie.emplace_back();
}
curr = trie[curr][c - 'A'];
}
}
int curr = 0;
std::string result;
while (M--) {
if (curr == -1) {
result.push_back('G');
continue;
}
if (trie[curr]['G' - 'A'] && trie[curr]['C' - 'A'] && trie[curr]['P' - 'A']) {
std::cout << -1 << std::endl;
return 0;
}
if (trie[curr]['G' - 'A'] && !trie[curr]['C' - 'A'] && !trie[curr]['P' - 'A']) {
result.push_back('P');
curr = -1;
continue;
}
if (!trie[curr]['G' - 'A'] && trie[curr]['C' - 'A'] && !trie[curr]['P' - 'A']) {
result.push_back('G');
curr = -1;
continue;
}
if (!trie[curr]['G' - 'A'] && !trie[curr]['C' - 'A'] && trie[curr]['P' - 'A']) {
result.push_back('C');
curr = -1;
continue;
}
if (trie[curr]['G' - 'A'] && trie[curr]['C' - 'A']) {
result.push_back('G');
curr = trie[curr]['G' - 'A'];
continue;
}
if (trie[curr]['G' - 'A'] && trie[curr]['P' - 'A']) {
result.push_back('P');
curr = trie[curr]['P' - 'A'];
continue;
}
if (trie[curr]['P' - 'A'] && trie[curr]['C' - 'A']) {
result.push_back('C');
curr = trie[curr]['C' - 'A'];
}
}
std::cout << result << std::endl;
}