結果
| 問題 | No.380 悪の台本 |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-10-18 09:37:59 |
| 言語 | C++23 (gcc 15.3.0 + boost 1.92.0 + ACL) |
| 結果 |
AC
不安定
|
| 実行時間 | 4 ms / 1,000 ms |
| + 894µs | |
| コード長 | 1,470 bytes |
| 記録 | |
| コンパイル時間 | 2,594 ms |
| コンパイル使用メモリ | 334,920 KB |
| 実行使用メモリ | 6,400 KB |
| 最終ジャッジ日時 | 2026-10-18 09:38:04 |
| 合計ジャッジ時間 | 4,615 ms |
|
ジャッジサーバーID (参考情報) |
judge5_0 / judge6_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 9 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
string str;
while(getline(cin, str)){
if(!str.empty() && str.back() == '\r') str.pop_back(); // CRLFの入力ファイル対策
size_t pos = str.find(' ');
if(pos == string::npos){
cout << "WRONG!\n";
continue;
}
string name = str.substr(0, pos), s = str.substr(pos + 1);
for(auto &&c : s) if(isupper(c)) c ^= 32;
// 半角スペースも記号なので、単語に分割せず末尾の記号を0~3文字取り除いて調べる
auto check = [&](const string &key){
for(int k = 0; k <= 3 && k <= int(s.size()); k++){
if(k && isalnum(s[s.size() - k])) break;
int len = int(s.size()) - k;
if(len >= int(key.size()) && s.substr(len - key.size(), key.size()) == key) return true;
}
return false;
};
bool ans = false;
if(name == "digi"){
ans = check("nyo");
}else if(name == "petit"){
ans = check("nyu");
}else if(name == "rabi"){
for(auto &&c : s) if(isalnum(c)) ans = true;
}else if(name == "gema"){
ans = check("gema");
}else if(name == "piyo"){
ans = check("pyo");
}
cout << (ans ? "CORRECT (maybe)" : "WRONG!") << '\n';
}
}