Submission #33041468


Source Code Expand

from typing import List, Dict
import itertools


def main():
    N, K = map(int, input().split())
    A, B = map(list, zip(*[list(map(int, input().split())) for i in range(K)]))

    mod: int = 10000

    D: Dict[int, int] = {a: b - 1 for a, b in zip(A, B)}

    dp: List[List[List[int]]] = [[[0] * 2 for j in range(3)] for i in range(N + 1)]

    if 1 in D:
        dp[1][D[1]] = [1, 0]
        dp[1][(D[1] + 1) % 3] = [0, 0]
        dp[1][(D[1] + 2) % 3] = [0, 0]
    else:
        dp[1] = [[1, 0] for i in range(3)]

    for i in range(2, N + 1):
        for j in range(3):
            dp[i][j][0] = sum(dp[i - 1][(j + 1) % 3]) + sum(dp[i - 1][(j + 2) % 3])
            dp[i][j][1] = dp[i - 1][j][0]

            dp[i][j][0] %= mod
            dp[i][j][1] %= mod

        if i in D:
            dp[i][(D[i] + 1) % 3] = [0, 0]
            dp[i][(D[i] + 2) % 3] = [0, 0]

    print(sum(itertools.chain(*dp[N])) % mod)


if __name__ == "__main__":
    main()

Submission Info

Submission Time
Task D - パスタ (Pasta)
User fjnkt98
Language Python (3.8.2)
Score 100
Code Size 997 Byte
Status AC
Exec Time 35 ms
Memory 10152 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 35 ms 9960 KiB
data2 AC 27 ms 9940 KiB
data3 AC 30 ms 10128 KiB
data4 AC 32 ms 10144 KiB
data5 AC 31 ms 10152 KiB