結果

問題 No.3427 Erasing a Subsequence
コンテスト
ユーザー pengin_2000
提出日時 2026-01-11 13:53:38
言語 C
(gcc 15.2.0)
結果
WA  
実行時間 -
コード長 923 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 1,613 ms
コンパイル使用メモリ 39,816 KB
実行使用メモリ 7,848 KB
最終ジャッジ日時 2026-01-11 13:53:41
合計ジャッジ時間 1,050 ms
ジャッジサーバーID
(参考情報)
judge3 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 4 WA * 10
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

#include<stdio.h>
int min(int a, int b)
{
	if (a < b)
		return a;
	else
		return b;
}
int s[1003], t[1003];
int dp[1003][1003];
int ans[1003], aa;
int main()
{
	int n, m;
	scanf("%d %d", &n, &m);
	int i, j;
	for (i = 0; i < n; i++)
		scanf("%d", &s[i]);
	for (i = 0; i < m; i++)
		scanf("%d", &t[i]);
	for (i = 0; i < n; i++)
		dp[i][m] = s[i];
	for (j = 0; j < m; j++)
		dp[n][j] = 1e9;
	dp[n][m] = -1;
	t[m] = -1;
	for (i = n - 1; i >= 0; i--)
	{
		for (j = m; j >= 0; j--)
		{
			if (s[i] == t[j])
			{
				if (dp[i + 1][j] < 1e3)
					dp[i][j] = min(dp[i + 1][j + 1], s[i]);
				else
					dp[i][j] = dp[i + 1][j + 1];
			}
			else
				dp[i][j] = s[i];
		}
	}
	aa = 0;
	for (i = j = 0; i < n; i++)
	{
		if (s[i] == t[j] && dp[i][j] == dp[i + 1][j + 1])
			j++;
		else
			ans[aa++] = s[i];
	}
	for (i = 0; i < aa - 1; i++)
		printf("%d ", ans[i]);
	if (aa > 0)
		printf("%d\n", ans[i]);
	else
		printf("\n");
	return 0;
}
0