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 |
|
| 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 |