結果

問題 No.2727 Tetrahedron Game
ユーザー MasKoaTSMasKoaTS
提出日時 2024-03-29 16:16:59
言語 PyPy3
(7.3.15)
結果
WA  
実行時間 -
コード長 1,440 bytes
コンパイル時間 330 ms
コンパイル使用メモリ 81,700 KB
実行使用メモリ 216,972 KB
最終ジャッジ日時 2024-03-29 16:17:09
合計ジャッジ時間 8,479 ms
ジャッジサーバーID
(参考情報)
judge13 / judge12
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 WA -
testcase_01 WA -
testcase_02 WA -
testcase_03 AC 827 ms
216,844 KB
testcase_04 AC 819 ms
216,972 KB
testcase_05 WA -
testcase_06 WA -
testcase_07 WA -
testcase_08 WA -
testcase_09 WA -
権限があれば一括ダウンロードができます

ソースコード

diff #

# WA(?)

import sys
input = sys.stdin.readline
MOD = 101
INV6 = pow(6, -1, MOD)

def det(P):
    ret = 0
    for i in range(3):
        ret += P[i][0] * P[(i + 1) % 3][1] * P[(i + 2) % 3][2]
        ret -= P[i][2] * P[(i + 1) % 3][1] * P[(i + 2) % 3][0]
    return ret % MOD

def solve(N, K, P, A, S):
    d = abs(det(P))
    if(d == 0):
        return 'D'
    dp = [[[-1] * 4 for _ in [0] * MOD] for _ in [0] * (N + 1)]
    for j in range(MOD):
        dp[-1][j][3] = (j >= K)
    for i in range(N - 1, -1, -1):
        a = A[i] + 1
        div2, div3 = (a % 2 == 0), (a % 3 == 0)
        player = (S[i] == 'K')
        for j in range(MOD):
            nj = j * a % MOD
            for k in range(4):
                nk = k | div2 | (div3 << 1)
                mv = [dp[i + 1][j][k], dp[i + 1][nj][nk]]
                if(player in mv):
                    dp[i][j][k] = player
                elif(-1 in mv):
                    dp[i][j][k] = -1
                else:
                    dp[i][j][k] = player ^ 1
    ij = d % MOD * INV6 % MOD
    ik = (d % 2 == 0) | ((d % 3 == 0) << 1)
    if(dp[0][ij][ik] == 1):
        return 'K'
    elif(dp[0][ij][ik] == -1):
        return 'D'
    else:
        return 'P'

t = int(input())
for _ in [0] * t:
    N, K = map(int, input().split())
    P = [list(map(int, input().split())) for _ in [0] * 3]
    A = list(map(int, input().split()))
    S = input()[:-1]
    print(solve(N, K, P, A, S))
0