提出 #29835850


ソースコード 拡げる

s = input()
t = input()
dp = [[0] * (len(t) + 1) for i in range(len(s) + 1)]
prev = [[(-10, -10)] * (len(t) + 1) for i in range(len(s) + 1)]
dp[0][0] = 0
for i in range(len(s)):
    for j in range(len(t)):
        if dp[i + 1][j + 1] < dp[i + 1][j]:
            dp[i + 1][j + 1] = dp[i + 1][j]
            prev[i + 1][j + 1] = (i + 1, j)
        if dp[i + 1][j + 1] < dp[i][j + 1]:
            dp[i + 1][j + 1] = dp[i][j + 1]
            prev[i + 1][j + 1] = (i, j + 1)
        if s[i] == t[j] and dp[i + 1][j + 1] < dp[i][j] + 1:
            dp[i + 1][j + 1] = dp[i][j] + 1
            prev[i + 1][j + 1] = (i, j)
answer = ""
i, j = len(s), len(t)
while (i, j) != (-10, -10):
    if prev[i][j] == (i - 1, j - 1):
        answer = s[i - 1] + answer
    i, j = prev[i][j]
print(answer)

提出情報

提出日時
問題 F - LCS
ユーザ Pro_ktmr
言語 PyPy3 (7.3.0)
得点 100
コード長 806 Byte
結果 AC
実行時間 860 ms
メモリ 427548 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 62176 KiB
0_01 AC 48 ms 62196 KiB
0_02 AC 48 ms 62144 KiB
0_03 AC 53 ms 62028 KiB
1_00 AC 49 ms 62160 KiB
1_01 AC 49 ms 62108 KiB
1_02 AC 815 ms 427548 KiB
1_03 AC 293 ms 214936 KiB
1_04 AC 304 ms 215476 KiB
1_05 AC 292 ms 215236 KiB
1_06 AC 800 ms 426828 KiB
1_07 AC 860 ms 424048 KiB
1_08 AC 835 ms 419248 KiB
1_09 AC 845 ms 424352 KiB
1_10 AC 794 ms 417260 KiB
1_11 AC 786 ms 419036 KiB
1_12 AC 750 ms 409584 KiB
1_13 AC 757 ms 425336 KiB