結果
| 問題 | No.3427 Erasing a Subsequence |
| コンテスト | |
| ユーザー |
kidodesu
|
| 提出日時 | 2025-12-29 17:16:46 |
| 言語 | PyPy3 (7.3.17) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 852 bytes |
| 記録 | |
| コンパイル時間 | 165 ms |
| コンパイル使用メモリ | 82,164 KB |
| 実行使用メモリ | 75,028 KB |
| 最終ジャッジ日時 | 2026-01-11 13:04:33 |
| 合計ジャッジ時間 | 1,558 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 13 RE * 1 |
ソースコード
n, m = map(int, input().split()); assert 1 <= m <= n <= 1000
S = list(map(int, input().split())); assert 1 <= min(S) and max(S) < 1000
T = list(map(int, input().split())); assert 1 <= min(T) and max(T) < 1000
dp = [[0 for _ in range(m+1)] for _ in range(n+1)]
for i in range(n-1, -1, -1):
for j in range(m-1, -1, -1):
if S[i] == T[j]:
dp[i][j] = dp[i+1][j+1]+1
else:
dp[i][j] = max(dp[i+1][j], dp[i][j+1])
inf = 1 << 30
Ans = [inf] * (n-m+1)
from heapq import *
hq = []
heappush(hq, (-1, inf, 0, 0))
while hq:
k, nxt, i, j = heappop(hq)
if Ans[k] < nxt:
continue
if i < n and j < m and S[i] == T[j]:
heappush(hq, (k, nxt, i+1, j+1))
if i < n and dp[i][j] == dp[i+1][j] and S[i] <= Ans[k+1]:
Ans[k+1] = S[i]
heappush(hq, (k+1, S[i], i+1, j))
print(*Ans[:-1])
kidodesu