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 |
|
|
|
|
|
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 |