#P2725. Finding Treasure

Finding Treasure

题目描述

从前有一个热爱冒险的年轻人。他在祖父的遗物中发现了一张旧羊皮纸,上面描述了一个秘密埋藏的宝藏。旧羊皮纸指示他前往一个特定的荒岛。岛的北岸有一大片草坪,草坪上有一棵橡树、一棵松树以及一个绞刑架。指示内容如下:从绞刑架走到橡树,并记住走过的距离,然后右转,走与之前同样的距离,在此处做记号。接着返回绞刑架,朝松树走去,并记住走过的距离,然后左转,走同样的距离,再在此处做记号。最后,在这两个记号之间线段的中点处挖掘,宝藏就在那里(见图11)。

图1

这位年轻人找到了该岛,并且也找到了橡树和松树,但由于时间的侵蚀,绞刑架已被毁坏。年轻人感到失望,于是离开了。多么遗憾!如果这位年轻人拥有一些几何知识,他就会发现宝藏的位置与绞刑架的位置无关。但我相信你不会重蹈覆辙。给定如何寻找宝藏的一般描述,你的任务是确定宝藏的位置,前提是这个位置可以被唯一确定。

首先,你将得到一些原始记号点的信息。这些点中有一些位置是已知的,而另一些则未知。接着你将得到一些制作新记号的指令。指令共分为三种类型:

  1. 给定两个记号AABB,新的记号位于AABB连线的中点。
  2. 给定两个记号AABB,从记号AA走向记号BB,到达后左转,走与AABB的距离相同,然后在该处做记号。
  3. 给定两个记号AABB,从记号AA走向记号BB,到达后右转,走与AABB的距离相同,然后在该处做记号。

最后,你将被要求确定某个记号的位置。


输入格式

输入包含若干测试用例。每个测试用例包括三个部分:

  1. 原始记号信息
    这一部分包含若干行,每一行有以下两种格式之一:

    • 格式一:
      MM
      表示记号MM的位置未知。
    • 格式二:
      M x yM\ x\ y
      表示记号MM的位置已知,为点(x,y)(x,y),其中xxyy均为区间[0,100][0, 100]内的整数。
      在这一部分中,每个记号最多只出现一次。
  2. 指令信息
    每条指令均采用以下格式:
    N A B CN\ A\ B\ C
    其中,NN(取值为112233)表示指令的类型;AABB是已存在的记号,且它们不相同;CC是新记号的符号,且是首次出现。

  3. 查询信息
    单独一行,仅包含一个记号符号,该记号为需要求其位置的标记。该记号之前肯定已经出现过。

一行包含“END”的记录表示输入结束。


输出格式

对于每个测试用例,输出一行,包含两个小数xxyy,表示求得的记号位置为(x,y)(x,y)。这两个数字需要保留小数点后两位。如果该位置无法确定,则输出“UNCERTAIN!”。


输入样例1

B 0 0
A
C 100 0
3 A B D
2 A C E
1 D E F
F
END

输出样例1

50.00 50.00

来源

Beijing 2005