提出 #31941466
ソースコード 拡げる
#input
s = input()
t = input()
#output
m = len(s)
n = len(t)
dp = [[0]*(m+1) for _ in range(n+1)]
for i in range(n):
for j in range(m):
if t[i] == s[j]:
dp[i+1][j+1] = dp[i][j]+1
else:
dp[i+1][j+1] = max(dp[i][j+1], dp[i+1][j])
ans = ""
while m > 0 and n > 0:
if dp[n][m] == dp[n-1][m]:
n -= 1
elif dp[n][m] == dp[n][m-1]:
m -= 1
elif dp[n][m] == dp[n-1][m-1] + 1:
ans += t[n-1]
n -= 1
m -= 1
print(ans[::-1])
提出情報
| 提出日時 | |
|---|---|
| 問題 | F - LCS |
| ユーザ | denovo2021 |
| 言語 | PyPy3 (7.3.0) |
| 得点 | 100 |
| コード長 | 536 Byte |
| 結果 | AC |
| 実行時間 | 288 ms |
| メモリ | 144664 KiB |
ジャッジ結果
| セット名 | All | ||
|---|---|---|---|
| 得点 / 配点 | 100 / 100 | ||
| 結果 |
|
| セット名 | テストケース |
|---|---|
| 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 |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| 0_00 | AC | 61 ms | 61776 KiB |
| 0_01 | AC | 52 ms | 61984 KiB |
| 0_02 | AC | 52 ms | 61860 KiB |
| 0_03 | AC | 52 ms | 61864 KiB |
| 1_00 | AC | 50 ms | 61904 KiB |
| 1_01 | AC | 51 ms | 61988 KiB |
| 1_02 | AC | 198 ms | 144624 KiB |
| 1_03 | AC | 206 ms | 144424 KiB |
| 1_04 | AC | 209 ms | 144664 KiB |
| 1_05 | AC | 204 ms | 144196 KiB |
| 1_06 | AC | 202 ms | 144280 KiB |
| 1_07 | AC | 288 ms | 143664 KiB |
| 1_08 | AC | 274 ms | 143196 KiB |
| 1_09 | AC | 274 ms | 143888 KiB |
| 1_10 | AC | 266 ms | 142320 KiB |
| 1_11 | AC | 250 ms | 143264 KiB |
| 1_12 | AC | 243 ms | 141456 KiB |
| 1_13 | AC | 243 ms | 143952 KiB |