結果
| 問題 |
No.380 悪の台本
|
| コンテスト | |
| ユーザー |
CELICA
|
| 提出日時 | 2020-09-20 20:41:13 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 23 ms / 1,000 ms |
| コード長 | 1,558 bytes |
| コンパイル時間 | 1,597 ms |
| コンパイル使用メモリ | 175,516 KB |
| 実行使用メモリ | 6,944 KB |
| 最終ジャッジ日時 | 2024-06-24 10:56:54 |
| 合計ジャッジ時間 | 2,394 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 8 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ul = unsigned long;
using ull = unsigned long long;
bool isSymbol(const char c)
{
return (c >= 0x20 && c <= 0x2F) ||
(c >= 0x3A && c <= 0x40) ||
(c >= 0x5B && c <= 0x60) ||
(c >= 0x7B && c <= 0x7E);
}
bool isCorrect(const string s, const string ps)
{
string sl(s);
size_t bp = s.size() - ps.size() - 3;
transform(sl.begin() + bp, sl.end(), sl.begin() + bp, ::tolower);
size_t p = 1e9;
for (size_t i = sl.size() - ps.size() - 3; i < sl.size(); ++i)
{
if (sl.substr(i, ps.size()) == ps)
{
p = i;
break;
}
}
if (p == 1e9)
return false;
for (size_t i = p + ps.size(); i < sl.size(); ++i)
{
if (isSymbol(sl[i]))
continue;
else
return false;
}
return true;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
stringstream ss;
string s;
vector<pair<string, string> > v = {
{"digi","nyo"},
{"petit","nyu"},
{"rabi",""},
{"gema","gema"},
{"piyo","pyo"} };
while (getline(cin, s))
{
bool f{ false };
for (const auto& it : v)
{
if (s.substr(0, 5) == "rabi ")
{
for (size_t i = 5; i < s.size(); ++i)
{
if (!isSymbol(s[i]))
{
f = true;
break;
}
}
}
else if (s.substr(0, it.first.size() + 1) == it.first + " ")
{
if (s.size() < it.first.size() + it.second.size() + 1)
continue;
else if (isCorrect(s, it.second))
{
f = true;
break;
}
}
}
ss << (f ? "CORRECT (maybe)\n" : "WRONG!\n");
}
cout << ss.str();
return 0;
}
CELICA