Pagini recente » Cod sursa (job #2175390) | Cod sursa (job #1926429) | Cod sursa (job #2103851) | Cod sursa (job #520129) | Cod sursa (job #1739615)
#include <stdio.h>
int n, m, a[1025], b[1025], v[1025][1025], sir[1025], bst;
int maxim(int a, int b) { return (a > b) ? a : b; }
int main()
{
freopen("cmlsc.in", "r", stdin);
freopen("cmlsc.out", "w", stdout);
scanf("%d %d", &m, &n);
for(int i=1; i<=m; ++i)
scanf("%d", &a[i]);
for(int i=1; i<=n; ++i)
scanf("%d", &b[i]);
for(int i=1; i<=m; ++i)
for(int j=1; j<=n; ++j)
if(a[i]==b[j])
v[i][j] = v[i-1][j-1] + 1;
else
v[i][j] = maxim(v[i-1][j], v[i][j-1]);
for(int i=m, j=n; i;)
{
if(a[i]==b[j]) { sir[bst++] = a[i]; i--; j--; }
else if(v[i-1][j]<v[i][j-1]) j--;
else i--;
}
printf("%d\n", bst);
for(int i=bst - 1; i>=0; --i) printf("%d ", sir[i]);
return 0;
}