Submission #24034155


Source Code Expand

def main():
    mod = 10 ** 9 + 7
    h, w = map(int, input().split())
    s = [[c == '.' for c in input()] for _ in range(h)]

    mask = (1 << (w + 1)) - 1

    def collision(j, b):
        return (j > 0 and b & 1
                or j + 1 < w and (b >> (w - 2)) & 1
                or (b >> (w - 1)) & 1
                or j > 0 and (b >> w) & 1)

    states = [None for _ in range(w)]
    for i in range(w):
        lis = [0]
        for j in range(w + 1):
            nex = []
            t = (i + j - 1) % w
            for k in lis:
                nex.append(k << 1)
                if not collision(t, k):
                    nex.append(k << 1 | 1)
            lis = nex
        states[i] = lis

    indices = [{b: i for i, b in enumerate(st)} for st in states]
    nexts = [[[indices[i + 1 - w][st << 1 & mask],
               indices[i + 1 - w][(st << 1 | 1) & mask]
               if not collision(i, st) else -1]
              for st in states[i]] for i in range(w)]

    dp = [0 for _ in states[0]]
    dp[0] = 1

    for i in range(h):
        for j in range(w):
            nex = [0 for _ in states[j + 1 - w]]
            for k, c in enumerate(dp):
                nk = nexts[j][k][0]
                nex[nk] += c
                if nex[nk] >= mod:
                    nex[nk] -= mod
                if s[i][j] and nexts[j][k][1] != -1:
                    nk = nexts[j][k][1]
                    nex[nk] += c
                    if nex[nk] >= mod:
                        nex[nk] -= mod

            dp = nex

    print(sum(dp) % mod)


if __name__ == "__main__":
    main()

Submission Info

Submission Time
Task 023 - Avoid War(★7)
User riantkb
Language PyPy3 (7.3.0)
Score 7
Code Size 1592 Byte
Status AC
Exec Time 5754 ms
Memory 857764 KiB

Judge Result

Set Name Sample Subtask 1 Subtask 2 Subtask 3 Subtask 4
Score / Max Score 0 / 0 1 / 1 1 / 1 2 / 2 3 / 3
Status
AC × 5
AC × 10
AC × 20
AC × 30
AC × 45
Set Name Test Cases
Sample sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt, sample_05.txt
Subtask 1 sample_01, sample_02, 01_01.txt, 01_02.txt, 01_03.txt, 01_04.txt, 01_05.txt, 01_06.txt, 01_07.txt, 01_08.txt, 01_09.txt, 01_10.txt
Subtask 2 sample_01, sample_02, sample_03, 01_01.txt, 01_02.txt, 01_03.txt, 01_04.txt, 01_05.txt, 01_06.txt, 01_07.txt, 01_08.txt, 01_09.txt, 01_10.txt, 02_01.txt, 02_02.txt, 02_03.txt, 02_04.txt, 02_05.txt, 02_06.txt, 02_07.txt, 02_08.txt, 02_09.txt, 02_10.txt
Subtask 3 sample_01, sample_02, sample_03, sample_04, 01_01.txt, 01_02.txt, 01_03.txt, 01_04.txt, 01_05.txt, 01_06.txt, 01_07.txt, 01_08.txt, 01_09.txt, 01_10.txt, 02_01.txt, 02_02.txt, 02_03.txt, 02_04.txt, 02_05.txt, 02_06.txt, 02_07.txt, 02_08.txt, 02_09.txt, 02_10.txt, 03_01.txt, 03_02.txt, 03_03.txt, 03_04.txt, 03_05.txt, 03_06.txt, 03_07.txt, 03_08.txt, 03_09.txt, 03_10.txt
Subtask 4 sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt, sample_05.txt, 01_01.txt, 01_02.txt, 01_03.txt, 01_04.txt, 01_05.txt, 01_06.txt, 01_07.txt, 01_08.txt, 01_09.txt, 01_10.txt, 02_01.txt, 02_02.txt, 02_03.txt, 02_04.txt, 02_05.txt, 02_06.txt, 02_07.txt, 02_08.txt, 02_09.txt, 02_10.txt, 03_01.txt, 03_02.txt, 03_03.txt, 03_04.txt, 03_05.txt, 03_06.txt, 03_07.txt, 03_08.txt, 03_09.txt, 03_10.txt, 04_01.txt, 04_02.txt, 04_03.txt, 04_04.txt, 04_05.txt, 04_06.txt, 04_07.txt, 04_08.txt, 04_09.txt, 04_10.txt
Case Name Status Exec Time Memory
01_01.txt AC 62 ms 62276 KiB
01_02.txt AC 53 ms 62316 KiB
01_03.txt AC 51 ms 62308 KiB
01_04.txt AC 51 ms 62488 KiB
01_05.txt AC 52 ms 62256 KiB
01_06.txt AC 53 ms 62188 KiB
01_07.txt AC 51 ms 62260 KiB
01_08.txt AC 53 ms 62420 KiB
01_09.txt AC 49 ms 62420 KiB
01_10.txt AC 50 ms 62528 KiB
02_01.txt AC 66 ms 68228 KiB
02_02.txt AC 51 ms 62956 KiB
02_03.txt AC 50 ms 62500 KiB
02_04.txt AC 54 ms 62412 KiB
02_05.txt AC 51 ms 62848 KiB
02_06.txt AC 62 ms 67848 KiB
02_07.txt AC 56 ms 67872 KiB
02_08.txt AC 71 ms 68212 KiB
02_09.txt AC 73 ms 68076 KiB
02_10.txt AC 69 ms 68004 KiB
03_01.txt AC 49 ms 62544 KiB
03_02.txt AC 94 ms 69352 KiB
03_03.txt AC 115 ms 73212 KiB
03_04.txt AC 109 ms 71716 KiB
03_05.txt AC 90 ms 69440 KiB
03_06.txt AC 129 ms 73348 KiB
03_07.txt AC 181 ms 83028 KiB
03_08.txt AC 128 ms 73220 KiB
03_09.txt AC 185 ms 83260 KiB
03_10.txt AC 195 ms 83548 KiB
04_01.txt AC 65 ms 68288 KiB
04_02.txt AC 73 ms 68364 KiB
04_03.txt AC 632 ms 203964 KiB
04_04.txt AC 2311 ms 700280 KiB
04_05.txt AC 1415 ms 338808 KiB
04_06.txt AC 3108 ms 582264 KiB
04_07.txt AC 1817 ms 367920 KiB
04_08.txt AC 3032 ms 581572 KiB
04_09.txt AC 5083 ms 857764 KiB
04_10.txt AC 5754 ms 857660 KiB
sample_01.txt AC 63 ms 62420 KiB
sample_02.txt AC 46 ms 62256 KiB
sample_03.txt AC 75 ms 68180 KiB
sample_04.txt AC 194 ms 83308 KiB
sample_05.txt AC 271 ms 95884 KiB