提出 #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
結果
AC × 18
セット名 テストケース
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