結果
| 問題 | No.1367 文字列門松 |
| コンテスト | |
| ユーザー |
sten_san
|
| 提出日時 | 2021-01-29 21:55:01 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.89.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,135 bytes |
| 記録 | |
| コンパイル時間 | 2,019 ms |
| コンパイル使用メモリ | 194,824 KB |
| 最終ジャッジ日時 | 2025-01-18 09:11:15 |
|
ジャッジサーバーID (参考情報) |
judge3 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 26 WA * 1 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
struct uns_t {} uns;
template <typename Element, typename Head, typename ...Args>
auto vec(Element init, Head arg, Args ...args) {
if constexpr (sizeof...(Args) == 0) return std::vector(arg, init);
else return std::vector(arg, vec(init, args...));
}
template <typename Element, typename Head, typename ...Args>
auto vec(uns_t, Head arg, Args ...args) {
return vec(Element(), arg, args...);
}
int main() {
string suf[CHAR_MAX + 1];
suf['k'] = "adomatsu";
suf['a'] = "domatsu";
suf['d'] = "omatsu";
suf['o'] = "matsu";
suf['m'] = "atsu";
suf['b'] = "tsu";
suf['t'] = "su";
suf['s'] = "u";
suf['u'] = "";
string s; cin >> s;
bool ans = true, found = false;
for (int i = 0; i < s.size(); ++i) {
auto c = suf[s[i]];
if (s[i] == 'a' && found) {
c = suf['b'];
}
for (int j = i + 1; j < s.size(); ++j) {
ans &= !!count(begin(c), end(c), s[j]);
}
found |= s[i] == 'a';
}
cout << (ans && count(begin(s), end(s), 'a') <= 2 ? "Yes" : "No") << endl;
}
sten_san