Submission #1799538


Source Code Expand

from collections import deque
base = ord('a')
root = [None]*30
root[-2] = 0; root[-3] = 0
def add(s):
    node = root
    for c in s:
        code = ord(c) - base
        child = node[code]
        if not child:
            node[code] = child = [None]*30
            child[-2] = node[-2] + 1
            child[-3] = 0
        node = child
    node[-3] = 1
def suffix():
    que = deque([root])
    while que:
        v = que.popleft()
        for i in range(26):
            if not v[i]:
                if v[-1]:
                    v[i] = v[-1][i]
                else:
                    v[i] = root[i] or root
                continue
            if v[-1]:
                v[i][-1] = v[-1][i]
            else:
                v[i][-1] = root
            que.append(v[i])
    root[-1] = root
ls = set()
vs = []

N = int(input())
for i in range(N):
    s = input()
    add(s)
    ls.add(len(s))
suffix()

t = input()
tl = len(t)

MOD = 10**9 + 7

dp = [0]*(tl + 1)
dp[0] = 1
for l in ls:
    vs.append(l)
*rng, = range(len(vs))
srcs = [root] * len(ls)
for i in range(tl):
    code = ord(t[i]) - base
    for j in rng:
        l = vs[j]
        current = srcs[j] = srcs[j][code]
        if current[-2] == l:
            if current[-3]:
                dp[i+1] += dp[i-l+1]
                dp[i+1] %= MOD
            srcs[j] = current[-1]
print(dp[tl])

Submission Info

Submission Time
Task H - Separate String
User yaketake08
Language PyPy3 (2.4.0)
Score 0
Code Size 1419 Byte
Status TLE
Exec Time 2106 ms
Memory 114780 KB

Judge Result

Set Name All
Score / Max Score 0 / 100
Status
AC × 38
TLE × 2
Set Name Test Cases
All 00_sample_00, 00_sample_01, 00_sample_02, 00_sample_03, 10_rand_00, 10_rand_01, 10_rand_02, 10_rand_03, 10_rand_04, 11_rand_00, 11_rand_01, 11_rand_02, 11_rand_03, 11_rand_04, 20_fixed_length_00, 20_fixed_length_01, 20_fixed_length_02, 21_fixed_length_00, 21_fixed_length_01, 21_fixed_length_02, 22_fixed_length_00, 22_fixed_length_01, 22_fixed_length_02, 23_fixed_length_00, 23_fixed_length_01, 23_fixed_length_02, 24_fixed_length_00, 24_fixed_length_01, 24_fixed_length_02, 30_mixed_length_00, 30_mixed_length_01, 30_mixed_length_02, 30_mixed_length_03, 30_mixed_length_04, 90_challenge_00, 90_challenge_01, 90_challenge_02, 90_challenge_03, 90_challenge_04, 90_challenge_05
Case Name Status Exec Time Memory
00_sample_00 AC 175 ms 38640 KB
00_sample_01 AC 168 ms 38256 KB
00_sample_02 AC 172 ms 38256 KB
00_sample_03 AC 176 ms 38256 KB
10_rand_00 AC 502 ms 95704 KB
10_rand_01 AC 535 ms 101596 KB
10_rand_02 AC 629 ms 97624 KB
10_rand_03 AC 585 ms 108252 KB
10_rand_04 AC 456 ms 78556 KB
11_rand_00 AC 619 ms 114776 KB
11_rand_01 AC 638 ms 113240 KB
11_rand_02 AC 618 ms 114780 KB
11_rand_03 AC 674 ms 112216 KB
11_rand_04 AC 615 ms 110808 KB
20_fixed_length_00 AC 552 ms 99416 KB
20_fixed_length_01 AC 583 ms 98776 KB
20_fixed_length_02 AC 583 ms 98776 KB
21_fixed_length_00 AC 372 ms 111708 KB
21_fixed_length_01 AC 376 ms 111708 KB
21_fixed_length_02 AC 374 ms 111708 KB
22_fixed_length_00 AC 529 ms 113240 KB
22_fixed_length_01 AC 511 ms 113240 KB
22_fixed_length_02 AC 511 ms 113240 KB
23_fixed_length_00 AC 439 ms 110940 KB
23_fixed_length_01 AC 448 ms 110940 KB
23_fixed_length_02 AC 443 ms 110940 KB
24_fixed_length_00 AC 395 ms 110172 KB
24_fixed_length_01 AC 399 ms 110172 KB
24_fixed_length_02 AC 403 ms 110172 KB
30_mixed_length_00 AC 468 ms 111452 KB
30_mixed_length_01 AC 457 ms 111452 KB
30_mixed_length_02 AC 455 ms 111452 KB
30_mixed_length_03 AC 460 ms 111452 KB
30_mixed_length_04 AC 460 ms 111452 KB
90_challenge_00 AC 319 ms 47852 KB
90_challenge_01 TLE 2106 ms 44012 KB
90_challenge_02 AC 300 ms 47980 KB
90_challenge_03 TLE 2106 ms 44140 KB
90_challenge_04 AC 367 ms 53720 KB
90_challenge_05 AC 182 ms 38768 KB