问题1702--yakuman!

1702: yakuman!

[命题人 : ]
时间限制 : 1 sec  内存限制 : 256 MB

提交

题目描述

    这是一道和麻将有关的题。
    麻将是一种四人桌游,其规则简单介绍如下:
    1. 麻将有34种不同的牌,可以分为两类:
          • 第一类为数字牌,分万、桶、索、三门,每门有序数从一至九
          • 第二类是字牌,包括“東、南、西、北”四种风牌及“白、发、中”三种三元牌


     每种牌有四张,因此一共有136张牌。
    2. 面子:三张一样的牌(如三万三万三万或者白白白),或者数字连续的三张数牌(如一万二万三万)
        对子:两张一样的牌(如九桶九桶或者北北)。
    3. 在游戏开始前,136张牌会被打乱顺序摆好,成为牌山。再从牌山中取出八张牌放在一边,这八张牌之后不会被摸到。其中的几张(根据游戏状态不同,最少一张,最多四张)作为宝牌指示牌,会向所有人展示。
    4. 游戏开始时,四个人各摸13张牌,然后从庄家开始,按逆时针顺序,每次先从牌山摸一张牌,(如果此时手中14张牌满足某个可以和牌的牌型,可以选择和牌),从手中的14张牌中选择一张扔进牌河(弃牌堆)中。
    5. 如果现在手中13张牌满足只要再摸到某张牌就可以和牌,那就称现在的状态为听牌(即使那张牌已经摸不到了)。如果听牌的牌型是役满(一类牌型),则称当前的状态为役满听牌。
    6. 如果有人和牌,或者牌山被摸完都没有人和牌,游戏结束。


    本题中役满指满足以下任意一种的牌型。
    九莲宝灯
    万、桶、索中的某一种以1112345678999的形式加上1到9其中任意一张成立,比如1s1s1s2s3s4s5s6s7s8s9s9s9s+9s。
    国士无双
   十三种幺九牌每种一张(即1m9m1p9p1s9s1z2z3z4z5z6z7z)和其中任意一种的第二张组成,比如1m9m1p9p1s9s1z2z3z4z5z6z7z+7z。
    大三元
    白、发、中各三张(5z5z5z6z6z6z7z7z7z)搭配一个面子和一个对子,比如5z5z5z6z6z6z7z7z7z+1s2s3s+1z1z。
    大四喜
    东、南、西、北各三张(1z1z1z2z2z2z3z3z3z4z4z4z)搭配一个对子,比如1z1z1z2z2z2z3z3z3z4z4z4z+1s1s。
    小X正在和室友打麻将,他已经连着输了好几把了!他不想再输更多的分,因此他决定采用防守策略。小X把场上的局面告诉了你,他想知道是否有可能有某个室友已经在役满听牌了。
    输入会给出当前的局面,包括宝牌指示牌、牌河中的牌、以及小X自己的手牌,如果现在场上有除了小X的人可能已经役满听牌了,请输出Dangerous,否则输出Safe。

输入

第一行一个整数n,表示宝牌指示牌的数量。
第二行一个字符串,长度为2∗n,表示当前的宝牌指示牌。
第三行一个整数m,表示牌河中牌的数量。
第四行一个字符串,长度为2∗m,表示当前的牌河中的牌。
第五行一个字符串,长度为26,表示小X的手牌。
保证输入合法。

输出

一行,Dangerous或者Safe

样例输入 Copy

1
5s
21
6z8m7m3p5z8m5m2z7z5p7s3s7z4s1m5s4s6m6s4m1p
2z3m9s4z4z6p4s2z1z7p7s5p7z

样例输出 Copy

Dangerous