Submission #31263127


Source Code Expand

MOD = 10000
n, k = map(int, input().split())
decided = [-1] * n
for i in range(k):
    a, b = map(int, input().split())
    decided[a - 1] = b - 1
dp = [[[0] * 3 for i in range(3)] for j in range(n)]
# dp[i][j][k] = i - 1 日目にパスタ j,i 日目にパスタ k を食べた場合の,i 日目までのパスタの食べ方の場合の数
if decided[0] != -1:
    if decided[1] != -1:
        dp[1][decided[0]][decided[1]] = 1
    else:
        for j in range(3):
            dp[1][decided[0]][j] = 1
else:
    if decided[1] != -1:
        for i in range(3):
            dp[1][i][decided[1]] = 1
    else:
        for i in range(3):
            for j in range(3):
                dp[1][i][j] = 1
for i in range(2, n):
    for j in range(3):
        for k in range(3):
            if decided[i] != -1 and decided[i] != k:
                continue # 決定済みの予定と食い違うものは除外
            for l in range(3):
                if l == j == k:
                    continue # 同じパスタを 3 日連続食べるケースを除外
                dp[i][j][k] += dp[i - 1][l][j]
                dp[i][j][k] %= MOD
answer = 0
for i in range(3):
    for j in range(3):
        answer += dp[n - 1][i][j]
answer %= MOD
print(answer)

Submission Info

Submission Time
Task D - パスタ (Pasta)
User Pro_ktmr
Language PyPy3 (7.3.0)
Score 100
Code Size 1292 Byte
Status AC
Exec Time 66 ms
Memory 66992 KiB

Judge Result

Set Name set01 set02 set03 set04 set05
Score / Max Score 20 / 20 20 / 20 20 / 20 20 / 20 20 / 20
Status
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
Set Name Test Cases
set01 data1
set02 data2
set03 data3
set04 data4
set05 data5
Case Name Status Exec Time Memory
data1 AC 66 ms 62400 KiB
data2 AC 61 ms 65980 KiB
data3 AC 55 ms 65024 KiB
data4 AC 59 ms 65640 KiB
data5 AC 59 ms 66992 KiB