Submission #3978577


Source Code Expand

N = int(input())
S = input()
MOD = 10**9 + 7

dp = [[0]*(N+1) for i in range(N+1)]
P = [0]*(N+1); Q = [0]*(N+1)
P[1] = 1
for i in range(N-2, 0, -1):
    r = 0
    if S[i-1] == '<':
        if S[i] == '<':
            for k in range(1, N-i+1):
                Q[k] = r = (r + P[k-1]) % MOD
        else:
            for k in range(1, N-i+1):
                Q[k] = r = (r + P[N-i-k]) % MOD
    else:
        if S[i] == '<':
            for k in range(1, N-i+1):
                Q[k] = r = (r + P[N-i-k]) % MOD
        else:
            for k in range(1, N-i+1):
                Q[k] = r = (r + P[k-1]) % MOD
    P, Q = Q, P
print(sum(P) % MOD)

Submission Info

Submission Time
Task T - Permutation
User yaketake08
Language Python (3.4.3)
Score 100
Code Size 666 Byte
Status AC
Exec Time 1596 ms
Memory 73972 KiB

Judge Result

Set Name All
Score / Max Score 100 / 100
Status
AC × 17
Set Name Test Cases
All 0_00, 0_01, 0_02, 1_00, 1_01, 1_02, 1_03, 1_04, 1_05, 1_06, 1_07, 1_08, 1_09, 1_10, 1_11, 1_12, 1_13
Case Name Status Exec Time Memory
0_00 AC 17 ms 3064 KiB
0_01 AC 17 ms 3064 KiB
0_02 AC 17 ms 3064 KiB
1_00 AC 17 ms 3064 KiB
1_01 AC 17 ms 3064 KiB
1_02 AC 1141 ms 73844 KiB
1_03 AC 1255 ms 73844 KiB
1_04 AC 1582 ms 73972 KiB
1_05 AC 1596 ms 73972 KiB
1_06 AC 1456 ms 73972 KiB
1_07 AC 1453 ms 72432 KiB
1_08 AC 1530 ms 72308 KiB
1_09 AC 1507 ms 72692 KiB
1_10 AC 1583 ms 71284 KiB
1_11 AC 1477 ms 71540 KiB
1_12 AC 1341 ms 70764 KiB
1_13 AC 1545 ms 73716 KiB