1345 : 笨拙之极的上野

时间限制:2 Sec 内存限制:256 MiB 提交:25 正确:8

提交 状态 论坛

题目描述


《笨拙之极的上野》中,科学部部长上野每天都搞出千奇百怪的发明,并让她的部员田中来测试。

这天,她又发明了一样东西,不过,这次是发明了一种语言——“Ueno语言”。

“Ueno语言”是一种处理数学上的映射关系的语言。它的语法如下:

addA(x):往集合A中添加x,如果集合A中已经有该元素,则忽略该命令。

addB(y):往集合B中添加y,如果集合B中已经有该元素,则忽略该命令。

buildmap(x,y):建立集合A中的元素x到集合B中的元素y的映射。如果集合A中不存在x,但是集合B中存在y,则输出"Invalid!Can't find x."(输出不包括双引号,下同)。如果集合B中不存在y,但是集合A中存在x,则输出"Invalid!Can't find y."。如果集合A中不存在x,且集合B中不存在y,输出“Invalid!Can't find both x and y.”。特别地,如果x元素之前已经建立了映射,则输出"Invalid!There is already a map from "+x元素+".",而无需考虑y是否存在的问题。

findy(x):输出x映射到集合B的像。如果没有此映射,输出"Invalid!No such map."。

findx(y):升序输出映射到y的原像。每个元素后面有一个空格。如果没有此映射,输出"Invalid!No such map."。

这种语言是怎么实现的呢?问题的答案就交给你了。

输入描述

第一行,输入正整数 $m$ ,表示有 $m$ 条语句。 $1 \leq m \leq 10^{5}$

接下来 $m$ 行,每行输入一句语句。输入的语句保证符合“Ueno语言”的语法。

这些语句处理的数只可能是整数且绝对值不超过 $10^{9}$ (即上文中的 $-10^{9} \leq x,y \leq 10^{9}$ 且 $x,y \in Z$ )。

输出描述

根据对应的语句输出。值得注意的是,每次输出后面都要有一个换行符。

样例输入

12
addA(2)
addA(5)
addB(3)
addB(4)
buildmap(2,3)
buildmap(2,5)
findy(2)
addA(6)
buildmap(6,3)
addA(6)
buildmap(5,3)
findx(3)

样例输出

Invalid!There is already a map from 2.
3
2 5 6 

提示

如图所示为执行了全部样例输入以后形成的映射图:
EOGh9I.png

来源

Enal WIT第二届程序设计竞赛(现场赛)