Pagini recente » Cod sursa (job #1104822) | Cod sursa (job #2763706) | Cod sursa (job #2888194) | Cod sursa (job #2114981) | Cod sursa (job #345309)
Cod sursa(job #345309)
#include<stdio.h>
int N,M,best[1025][1025];
int v[1025],a[1025],o;
void recurs(int p,int u)
{ if(p==0||u==0)
return;
if(v[p]==a[u])
{
recurs(p-1,u-1);
}
else if(best[p-1][u]>best[p][u-1])
recurs(p-1,u);
else
recurs(p,u-1);
if(v[p]==a[u])
{
printf("%d ",v[p]);
++o;
}
}
int main()
{
freopen("cmlsc.in","r",stdin);
freopen("cmlsc.out","w",stdout);
scanf("%d%d",&N,&M);
for(int i=1;i<=N;++i)
scanf("%d",&v[i]);
for(int j=1;j<=M;++j)
scanf("%d",&a[j]);
for(int i=1;i<=N;++i)
for(int j=1;j<=M;++j)
{
if(v[i]==a[j])
best[i][j]=1+best[i-1][j-1];
else
{
if(best[i-1][j]>best[i][j-1])
best[i][j]=best[i-1][j];
else
best[i][j]=best[i][j-1];
}
}
printf("%d\n",best[N][M]);
recurs(N,M);
return 0;
}