結果

問題 No.832 麻雀修行中
コンテスト
ユーザー flippergo
提出日時 2026-07-30 16:01:47
言語 PyPy3
(7.3.17)
コンパイル:
pypy3 -mpy_compile _filename_
実行:
pypy3 _filename_
結果
WA  
実行時間 -
コード長 1,930 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 214 ms
コンパイル使用メモリ 95,984 KB
実行使用メモリ 93,576 KB
最終ジャッジ日時 2026-07-30 16:02:27
合計ジャッジ時間 4,016 ms
ジャッジサーバーID
(参考情報)
judge2_0 / judge1_1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 6
other AC * 23 WA * 1 RE * 1
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

import sys
sys.setrecursionlimit(1000000)
S = list(input())
S = [int(i) for i in S]
C = {i:0 for i in range(1,9+1)}
for i in S:
    C[i] += 1
ans = []
def dfs(j,flag):
    global S
    if flag==0:
        if C[j]>=2:
            flag = 1
            S.remove(j)
            S.remove(j)
            C[j] -= 2
            if len(S)==0:
                C[j] += 2
                S.append(j)
                S.append(j)
                return True
            if dfs(min(S),1):
                C[j] += 2
                S.append(j)
                S.append(j)
                flag = 0
                return True
            C[j] += 2
            S.append(j)
            S.append(j)
            flag = 0
    if C[j]>=3:
        S.remove(j)
        S.remove(j)
        S.remove(j)
        C[j] -= 3
        if len(S)==0:
            C[j] += 3
            S += [j,j,j]
            return True
        if dfs(min(S),flag):
            C[j] += 3
            S += [j,j,j]
            return True
        C[j] += 3
        S += [j,j,j]
    if j+2<=9 and C[j]>0 and C[j+1]>0 and C[j+2]>0:
        S.remove(j)
        S.remove(j+1)
        S.remove(j+2)
        C[j] -= 1
        C[j+1] -= 1
        C[j+2] -= 1
        if len(S)==0:
            C[j] += 1
            C[j+1] += 1
            C[j+2] += 1
            S += [j,j+1,j+2]
            return True
        if dfs(min(S),flag):
            C[j] += 1
            C[j+1] += 1
            C[j+2] += 1
            S += [j,j+1,j+2]
            return True
        C[j] += 1
        C[j+1] += 1
        C[j+2] += 1
        S += [j,j+1,j+2]
    return False
for i in range(1,9+1):
    if C[i]==4:continue
    S.append(i)
    C[i] += 1
    cnt = 0
    for j in range(1,9+1):
        if C[j]==2:
            cnt += 1
    if cnt==7:
        ans.append(i)
        S.remove(i)
        continue
    if dfs(min(S),0):
        ans.append(i)
    C[i] -= 1  
    S.remove(i)
for a in ans:
    print(a)
0