Skip to content

11256: 【原1256】你的魔戒?不,是你的魔戒。加强版

题目

题目描述

author: Kalethars 张晔 原OJ链接:https://acm.sjtu.edu.cn/OnlineJudge-old/problem/1256

Description

在前往末日火山的途中,佛罗多与他的霍比特人同胞不幸被半兽人抓住了。半兽人要对每个霍比特人进行询问,以找出哪个霍比特人携带了至尊魔戒。每个霍比特人可能会说以下几种话:

I have the ring. 我有魔戒。

I have not the ring. 我没有魔戒。

XXX has the ring. XXX有魔戒。(XXX表示某个霍比特人的名字)

XXX has not the ring. XXX没有魔戒。

Today is XXX. 今天天气真好,是XXX吧!(XXX表示Monday/Tuesday/Wednesday/Thursday/Friday/Saturday/Sunday其中之一,只有首字母大写)

询问中所回答的其他话,都不列入考虑的范围之内。

半兽人所知道的是,霍比特人中有N个人始终说假话,而其他人始终说真话。

每个霍比特人可能会回答多句话也可能不会回答。

必有且仅有一个霍比特人携带了魔戒。(霍比特人中不一定有人叫佛罗多,且携带者不一定是佛罗多哦~)

现在,半兽人希望从中推断出谁是真正的魔戒持有者!

Input Format

输入由若干行组成,第一行有二个整数,M(1<=M<=10)、N(1<=N<=M)和P(1<=P<=20)。

M是半兽人抓到的霍比特人数,N是其中始终说谎的人数,P是得到的回答的总数。接下来M行,

每行是一个霍比特人的名字(英文字母组成,全部大写)。

往后有P行,每行开始是某个霍比特人的名宇,紧跟着一个冒号和一个空格,后面是一句回答,符合前表中所列格式。回答每行不会超过250个字符。

输入中不会出现连续的两个空格,而且每行开头和结尾也没有空格。

Output Format

如果你的程序能确定谁持有了魔戒,则输出他的名字。如果程序判断出不止一个人可能持有了魔戒,则输出 I am confused. 。如果程序判断出没有人可能持有魔戒,则输出 It is impossible! 。

Sample Input

3 1 5
FRODO
SAM
GOLLUM
FRODO: I have the ring.
FRODO: Today is Sunday.
GOLLUM: FRODO has the ring.
SAM: I have the ring.
SAM: How are you??

Sample Output

FRODO

Hint

对于60%的数据,将不涉及到日期。

使用getline(cin,变量名)来读入整行的字符串。

使用getchar()来读入可能有的多余的字符(如回车等等)。

使用字符串.substr(起始位置,长度)来截取字符串。

Oops! 本题目还没有解答!

助教老师们编题的速度,已经超过了解题的速度!

OJ翻了一新,但本解答集还大多用的是2017-2019级,甚至更早的同学们贡献的答案。

如果你已经AC了,可以的话,请您参考添加页面,与大家一起分享你的题解!