結果

問題 No.380 悪の台本
ユーザー masamasa
提出日時 2016-06-17 23:42:19
言語 C++11
(gcc 11.4.0)
結果
WA  
実行時間 -
コード長 1,233 bytes
コンパイル時間 759 ms
コンパイル使用メモリ 67,544 KB
実行使用メモリ 6,824 KB
最終ジャッジ日時 2024-11-06 22:43:47
合計ジャッジ時間 1,408 ms
ジャッジサーバーID
(参考情報)
judge5 / judge1
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 2 ms
5,248 KB
testcase_01 WA -
testcase_02 AC 2 ms
5,248 KB
testcase_03 AC 2 ms
5,248 KB
testcase_04 WA -
testcase_05 WA -
testcase_06 WA -
testcase_07 AC 147 ms
5,248 KB
testcase_08 AC 4 ms
5,248 KB
testcase_09 WA -
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
#include <utility>
#include <string>

using namespace std;

vector<string> names = {"digi", "petit", "rabi", "gema", "piyo"};
vector<string> tails = {"nyo",  "nyu",   "",     "gema", "pyo"};

bool check_tail(string &s, int idx) {
	int pos = s.rfind(tails[idx]);
	if (pos == string::npos) {
		return false;
	}
	string tail = s.substr(pos);
	if (tail.size() > tails[idx].size() + 3) {
		return false;
	}

	for (int k = tails[idx].size(); k < tail.size(); k++) {
		if (isalnum(tail[k]) || tail[k] == ' ') {
			return false;
		}
	}

	return true;
}

bool check_rabi(string &s) {
	for (int j = 0; j < s.size(); j++) {
		if (isalnum(s[j])) {
			return true;
		}
	}
	return false;
}

int main() {
	string s;

	while (getline(cin, s)) {
		bool ok = false;
		for (int i = 0; i < names.size(); i++) {
			if (s.find(names[i] + " ") == 0) {
				s = s.substr(names[i].size() + 1);
				s = s.substr(max(0, (int) s.size() - 10));
				transform(s.begin(), s.end(), s.begin(), ::tolower);
				if (names[i] == "rabi") {
					ok = check_rabi(s);
				} else {
					ok = check_tail(s, i);
				}
			}
		}

		cout << (ok ? "CORRECT (maybe)" : "WRONG!") << endl;
	}

	return 0;
}
0