Submission #1513023


Source Code Expand

import math,string,itertools,fractions,heapq,collections,re,array,bisect,sys,random,time,copy,functools

sys.setrecursionlimit(10**7)
inf = 10**20
gosa = 1.0 / 10**9
mod = 10**9 + 7

def LI(): return [int(x) for x in sys.stdin.readline().split()]
def LI_(): return [int(x)-1 for x in sys.stdin.readline().split()]
def LF(): return [float(x) for x in sys.stdin.readline().split()]
def LS(): return sys.stdin.readline().split()
def I(): return int(sys.stdin.readline())
def F(): return float(sys.stdin.readline())
def S(): return input()


def main():
    a = [LI() for _ in range(5)]
    ii = [2**i for i in range(25)]

    d = collections.defaultdict(int)
    cs = set(range(25))
    for i in range(5):
        for j in range(5):
            ij = i*5 + j
            if a[i][j] > 0:
                d[a[i][j]] = ij + 1
                cs.remove(ij)

    def f(t, i):
        u = ii[i-5] if i > 4 else None
        d = ii[i+5] if i < 20 else None
        l = ii[i-1] if i % 5 != 0 else None
        r = ii[i+1] if i % 5 != 4 else None
        if u and d and ((t & u > 0 and t & d == 0) or (t & u == 0 and t & d > 0)):
            return False
        if l and r and ((t & l > 0 and t & r == 0) or (t & l == 0 and t & r > 0)):
            return False
        return True

    rd = collections.defaultdict(int)
    rd[0] = 1
    for k in range(1,26):
        ks = cs
        if d[k] > 0:
            ks = set([d[k] - 1])
        nd = collections.defaultdict(int)
        for nk in ks:
            ni = ii[nk]
            for pr, v in rd.items():
                if pr & ni > 0:
                    continue
                if f(pr, nk):
                    nd[pr | ni] += v
        rd = nd

    return sum(rd.values()) % mod



print(main())

Submission Info

Submission Time
Task D - 25個の整数
User iehn
Language PyPy3 (2.4.0)
Score 100
Code Size 1803 Byte
Status AC
Exec Time 1359 ms
Memory 121432 KB

Judge Result

Set Name Sample Subtask1 Subtask2
Score / Max Score 0 / 0 30 / 30 70 / 70
Status
AC × 4
AC × 19
AC × 29
Set Name Test Cases
Sample sample-01.txt, sample-02.txt, sample-03.txt, sample-04.txt
Subtask1 sample-01.txt, sample-02.txt, sample-03.txt, sample-04.txt, test-1-01.txt, test-1-02.txt, test-1-03.txt, test-1-04.txt, test-1-05.txt, test-1-06.txt, test-1-07.txt, test-1-08.txt, test-1-09.txt, test-1-10.txt, test-1-11.txt, test-1-12.txt, test-1-13.txt, test-1-14.txt, test-1-15.txt
Subtask2 sample-01.txt, sample-02.txt, sample-03.txt, sample-04.txt, test-1-01.txt, test-1-02.txt, test-1-03.txt, test-1-04.txt, test-1-05.txt, test-1-06.txt, test-1-07.txt, test-1-08.txt, test-1-09.txt, test-1-10.txt, test-1-11.txt, test-1-12.txt, test-1-13.txt, test-1-14.txt, test-1-15.txt, test-2-01.txt, test-2-02.txt, test-2-03.txt, test-2-04.txt, test-2-05.txt, test-2-06.txt, test-2-07.txt, test-2-08.txt, test-2-09.txt, test-2-10.txt
Case Name Status Exec Time Memory
sample-01.txt AC 332 ms 67052 KB
sample-02.txt AC 303 ms 65772 KB
sample-03.txt AC 282 ms 64236 KB
sample-04.txt AC 290 ms 64236 KB
test-1-01.txt AC 290 ms 64236 KB
test-1-02.txt AC 284 ms 64236 KB
test-1-03.txt AC 283 ms 64236 KB
test-1-04.txt AC 290 ms 64236 KB
test-1-05.txt AC 284 ms 64236 KB
test-1-06.txt AC 289 ms 64236 KB
test-1-07.txt AC 280 ms 64236 KB
test-1-08.txt AC 282 ms 64236 KB
test-1-09.txt AC 285 ms 64236 KB
test-1-10.txt AC 285 ms 64236 KB
test-1-11.txt AC 288 ms 64236 KB
test-1-12.txt AC 293 ms 65132 KB
test-1-13.txt AC 294 ms 64236 KB
test-1-14.txt AC 299 ms 65004 KB
test-1-15.txt AC 299 ms 64236 KB
test-2-01.txt AC 431 ms 76140 KB
test-2-02.txt AC 415 ms 76268 KB
test-2-03.txt AC 324 ms 67308 KB
test-2-04.txt AC 465 ms 80620 KB
test-2-05.txt AC 583 ms 92396 KB
test-2-06.txt AC 1048 ms 119508 KB
test-2-07.txt AC 806 ms 108628 KB
test-2-08.txt AC 1064 ms 118228 KB
test-2-09.txt AC 921 ms 114388 KB
test-2-10.txt AC 1359 ms 121432 KB