結果

問題 No.102 トランプを奪え
ユーザー chocoruskchocorusk
提出日時 2020-09-13 08:10:22
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 3,230 ms / 5,000 ms
コード長 1,054 bytes
コンパイル時間 267 ms
コンパイル使用メモリ 82,428 KB
実行使用メモリ 173,956 KB
最終ジャッジ日時 2024-06-11 14:56:08
合計ジャッジ時間 8,394 ms
ジャッジサーバーID
(参考情報)
judge3 / judge2
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 37 ms
51,840 KB
testcase_01 AC 39 ms
57,728 KB
testcase_02 AC 162 ms
78,592 KB
testcase_03 AC 36 ms
52,736 KB
testcase_04 AC 48 ms
63,360 KB
testcase_05 AC 334 ms
84,060 KB
testcase_06 AC 291 ms
83,464 KB
testcase_07 AC 242 ms
79,756 KB
testcase_08 AC 573 ms
90,836 KB
testcase_09 AC 3,230 ms
173,956 KB
testcase_10 AC 2,555 ms
151,924 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

import sys
read=sys.stdin.buffer.read
readline=sys.stdin.buffer.readline
readlines=sys.stdin.buffer.readlines
dp={}
def solve(a, r):
    if (a, r) in dp:
        return dp[(a, r)]
    s=sum(a)
    if s==0:
        if r[0]>r[1]:
            dp[(a, r)]=1
            return 1
        elif r[0]==r[1]:
            dp[(a, r)]=0
            return 0
        else:
            dp[(a, r)]=-1
            return -1
    ans=-1
    for i in range(4):
        for x in range(1, 4):
            if x>a[i]:
                break
            b=list(a)
            b[i]-=x
            r1=list(r)[::-1]
            r1[1]+=x
            if b[i]==0:
                z=(r1[0]+1)//2
                r1[0]-=z
                r1[1]+=z
            t=solve(tuple(b), tuple(r1))
            if t==-1:
                dp[(a, r)]=1
                return 1
            elif t==0:
                ans=0
    dp[a]=ans
    return ans
n=tuple(map(int, readline().split()))
s=sum(n)
r=(0, 0)
a=solve(n, r)
if a==-1:
    print("Jiro")
elif a==0:
    print("Draw")
else:
    print("Taro")
0