Please sign in first.
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 |
|
|
|
|
|
| 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 |