【问题描述】
作为一个 ingresser ,小X每天都会去 hack portal 。某天,正在一个 portal hacking 的小X发现一个奇妙的现象:可以通过某些portal传送到另一个特定的地方,同时每一个 portal 都有一个自己的 四维坐标 loc ,一个它可以传送到的地方的 四维坐标 target , 以及一个 加密的四维坐标 mask ,也就是说每一个 portal 都有这样格式的信息: < target, mask, loc> ,同时,除了小X现在所在的 portal 以外,周围还有 n 个 portal;
假设小X想要到达的地方的 四维坐标 D ,当前所在的 protal 的信息为 < nowloc, nowmast>:
如果目的地 D 与当前所在地的 nowmask 同位相与 后的结果与当前所在地的坐标 nowloc一致,显然小X想要的地方就在周围,无需使用传送门,也就是: nowloc == D&nowmask ,此时输出 direct delivery
, 否则:
如果周围的 n 个 portal 存在一个 portal 满足其 加密坐标 mask 与小X的目的坐标 D 同位相与后的结果与 target 相同,即 target==D&mask,则表明小X可以通过这个 portal 传送到 D 此时输出这个传送门的坐标 loc
即可,(这样的loc至多一个),否则:
如果存在一个 特殊 portal ,小X便可以通过这个特殊的传送门到他想去的地方,输出这个特殊的 portal 的坐标 loc
即可,特殊 portal 至多只有一个,格式为: < 0.0.0.0, 255.255.255.255, loc> (注意,只有前面两种情况都不成立并且存在一个特殊 portal 才可以使用特殊 portal ),否则:
如果以上都不能找到一个 portal ,那么说明小X 无法通过 portal 来直接传送到目的地,这时他只能走过去了,输出 null
即可。
现在,小X已经知道了当前所在的传送门的坐标,以及周围的 n 个传送门的信息,信息的格式如上,他有 q 个独立的询问,每一次询问都是一个目的坐标 D ,对每一个询问输出结果;
【输入形式】
第一行一个测试组数 t (1 ≤ t ≤ 10)
接下来每一组测试数据
首先是一个小X当前所在的 portal 信息: < loc, mask> 其中( < loc0.loc1.loc2.loc3 > loci ∈ [1, 254] , < mask0.mask1.mask2.mask3 > maski ∈ [0, 255] 每个坐标之间空格分隔,即共8个数字)
然后一个整数 n (1 ≤ n ≤ 100) 表示周围的 portal 的数量
接下来n行,每一行的格式为 < loc, mask, target> (注意如果输出target也用空格分隔,行末没空格)
接下来一个整数 q (1 ≤ q ≤ 1000) 表示小X的询问次数
接下来 q 行,每行一个坐标 D = < loc0, loc1, loc2, loc3> (空格分隔)
【输出形式】
如果小X的目的坐标和当前所在 portal 的 mask 相与后的结果与 loc 相同,就输出 direct delivery
如果没有特殊 portal,并且可以找到一个合法的portal,输出portal 的坐标即可; 如果没有找到但有特殊portal,则输出特殊portal的坐标即可,空格分隔无行末空格
如果没有一个合法的portal,输出 null
即可;
【样例输入】
1 200 0 0 0 252 0 0 0 3 0 0 0 0 255 255 255 255 222 14 232 70 156 0 0 0 255 128 0 0 2 128 213 244 23 144 0 0 255 240 0 0 13 126 174 213 3 156 0 0 83 200 233 233 233 233 233 233 233
【样例输出】
2 128 213 244 direct delivery 222 14 232 70
【样例说明】
对于第一个询问,第二项的 255 128 0 0
与 156 0 0 83
相与后的结果为 156 0 0 0
,所以输出 2 128 213 244
对于第二个询问,所在的protal的 252 0 0 0
与 200 233 233 233
相与的结果为 200 0 0 0
即为所在地的坐标,此时输出 direct delivery
对于最后一个询问,只有特殊protal满足条件,所以此时输出特殊portal的坐标 222 14 232 70
【评分标准】
难度等级: | 0 |
总通过次数: | 0 |
总提交次数: | 0 |