Submission #53547681
Source Code Expand
H, W, K = map(int, input().split()) mod = 10**9 + 7 # dp[i][j] := i 行 j 列目に番号 1 が存在する通り数 dp = [[0]*(W + 1) for _ in range(H + 1)] dp[0][1] = 1 for i in range(H): for S in range(1 << (W - 1)): if (S & (S >> 1)): continue amida = [j for j in range(W)] for j in range(W - 1): if (S >> j) & 1: amida[j], amida[j + 1] = amida[j + 1], amida[j] for j in range(W): dp[i + 1][j + 1] += dp[i][amida[j] + 1] dp[i + 1][j + 1] %= mod print(dp[H][K])
Submission Info
Submission Time | |
---|---|
Task | D - Number of Amidakuji |
User | ryusuke_h |
Language | Python (PyPy 3.10-v7.3.12) |
Score | 400 |
Code Size | 586 Byte |
Status | AC |
Exec Time | 68 ms |
Memory | 82288 KiB |
Judge Result
Set Name | Sample | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 400 / 400 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt, sample_05.txt, sample_06.txt |
All | in01.txt, in02.txt, in03.txt, in04.txt, in05.txt, in06.txt, in07.txt, in08.txt, in09.txt, in10.txt, sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt, sample_05.txt, sample_06.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
in01.txt | AC | 68 ms | 82108 KiB |
in02.txt | AC | 68 ms | 81792 KiB |
in03.txt | AC | 68 ms | 82288 KiB |
in04.txt | AC | 67 ms | 81960 KiB |
in05.txt | AC | 67 ms | 81924 KiB |
in06.txt | AC | 63 ms | 81380 KiB |
in07.txt | AC | 57 ms | 76504 KiB |
in08.txt | AC | 67 ms | 81712 KiB |
in09.txt | AC | 61 ms | 81120 KiB |
in10.txt | AC | 68 ms | 82116 KiB |
sample_01.txt | AC | 55 ms | 76560 KiB |
sample_02.txt | AC | 55 ms | 76424 KiB |
sample_03.txt | AC | 56 ms | 76512 KiB |
sample_04.txt | AC | 56 ms | 76444 KiB |
sample_05.txt | AC | 55 ms | 76500 KiB |
sample_06.txt | AC | 65 ms | 82196 KiB |