Submission #3969139
Source Code Expand
*S, = map(ord, input())
*T, = map(ord, input())
LS = len(S); LT = len(T)
dp = [[-1]*(LT+1) for i in range(LS+1)]
for i in range(LS-1, -1, -1):
for j in range(LT-1, -1, -1):
if S[i] == T[j]:
dp[i][j] = max(dp[i+1][j+1] + 1, dp[i+1][j], dp[i][j+1])
else:
dp[i][j] = max(dp[i+1][j], dp[i][j+1])
i = j = 0
ans = []
while i < LS and j < LT:
if S[i] == T[j]:
if dp[i][j] == dp[i+1][j+1] + 1:
ans.append(S[i])
i += 1; j += 1
elif dp[i][j] == dp[i+1][j]:
i += 1
else:
j += 1
else:
if dp[i][j] == dp[i+1][j]:
i += 1
else:
j += 1
print(*map(chr, ans), sep='')
Submission Info
| Submission Time | |
|---|---|
| Task | F - LCS |
| User | yaketake08 |
| Language | PyPy3 (2.4.0) |
| Score | 100 |
| Code Size | 741 Byte |
| Status | AC |
| Exec Time | 507 ms |
| Memory | 115292 KiB |
Judge Result
| Set Name | All | ||
|---|---|---|---|
| Score / Max Score | 100 / 100 | ||
| Status |
|
| Set Name | Test Cases |
|---|---|
| All | 0_00, 0_01, 0_02, 0_03, 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 | 172 ms | 38256 KiB |
| 0_01 | AC | 172 ms | 38256 KiB |
| 0_02 | AC | 172 ms | 38256 KiB |
| 0_03 | AC | 182 ms | 38256 KiB |
| 1_00 | AC | 174 ms | 38256 KiB |
| 1_01 | AC | 172 ms | 38256 KiB |
| 1_02 | AC | 423 ms | 114140 KiB |
| 1_03 | AC | 373 ms | 111964 KiB |
| 1_04 | AC | 389 ms | 112348 KiB |
| 1_05 | AC | 359 ms | 111964 KiB |
| 1_06 | AC | 412 ms | 113756 KiB |
| 1_07 | AC | 503 ms | 114780 KiB |
| 1_08 | AC | 507 ms | 114524 KiB |
| 1_09 | AC | 492 ms | 115292 KiB |
| 1_10 | AC | 480 ms | 113628 KiB |
| 1_11 | AC | 480 ms | 114652 KiB |
| 1_12 | AC | 461 ms | 111964 KiB |
| 1_13 | AC | 461 ms | 113500 KiB |