結果

問題 No.102 トランプを奪え
ユーザー chocoruskchocorusk
提出日時 2020-09-13 08:08:26
言語 Python3
(3.12.2 + numpy 1.26.4 + scipy 1.12.0)
結果
AC  
実行時間 3,010 ms / 5,000 ms
コード長 1,054 bytes
コンパイル時間 184 ms
コンパイル使用メモリ 11,044 KB
実行使用メモリ 58,756 KB
最終ジャッジ日時 2023-09-02 07:57:14
合計ジャッジ時間 7,491 ms
ジャッジサーバーID
(参考情報)
judge11 / judge13
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 17 ms
8,396 KB
testcase_01 AC 17 ms
8,332 KB
testcase_02 AC 54 ms
9,336 KB
testcase_03 AC 17 ms
8,284 KB
testcase_04 AC 18 ms
8,388 KB
testcase_05 AC 202 ms
12,176 KB
testcase_06 AC 180 ms
11,792 KB
testcase_07 AC 66 ms
9,456 KB
testcase_08 AC 361 ms
15,172 KB
testcase_09 AC 3,010 ms
58,756 KB
testcase_10 AC 2,300 ms
43,968 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