Pagini recente » Cod sursa (job #1859201) | Cod sursa (job #2912526) | Cod sursa (job #421321) | Cod sursa (job #3163872) | Cod sursa (job #208277)
Cod sursa(job #208277)
#include <stdio.h>
FILE *fin,*fout;
long n,m,z,i,j;
int a[1025],b[1025],v[1025];
int c[1025][1025];
int main()
{
fin=fopen("cmlsc.in","r");
fout=fopen("cmlsc.out","w");
fscanf(fin,"%ld%ld",&n,&m);
for(i=1;i<=n;i++) fscanf(fin,"%d",&a[i]);
for(i=1;i<=m;i++) fscanf(fin,"%d",&b[i]);
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(a[i]==b[j]) c[i][j]=c[i-1][j-1]+1;
else
if(c[i-1][j]>c[i][j-1]) c[i][j]=c[i-1][j];
else c[i][j]=c[i][j-1];
fprintf(fout,"%d\n",c[n][m]);
i=n; j=m;
do{
if(a[i]==b[j])
{ z++; v[z]=a[i];
i--; j--; c[n][m]--;}
else
if(c[i-1][j]>c[i][j-1]) i--;
else j--;
}while((i>0) && (j>0) && (c[n][m]!=0));
for(i=z;i>=1;i--) fprintf(fout,"%d ",v[i]);
fprintf(fout,"\n");
fclose(fin); fclose(fout);
return 0;
}