Pagini recente » Cod sursa (job #3123964) | Cod sursa (job #574554) | Cod sursa (job #504566) | Cod sursa (job #2711196) | Cod sursa (job #564042)
Cod sursa(job #564042)
#include<stdio.h>
FILE *in=fopen("cmlsc.in", "r");
FILE * out=fopen("cmlsc.out", "w");
int n, m, a[1024], b[1024], d[1024][1024], sir[1024], bst, i, j;
int mx(int a, int b){
if(a>b)return a;
return b;
}
int main(){
fscanf(in, "%d%d", &m, &n);
for(i=1;i<=m;i++)fscanf(in, "%d", &a[i]);
for(i=1;i<=n;i++)fscanf(in, "%d", &b[i]);
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
{if(a[i]==b[j])d[i][j]=d[i-1][j-1]+1;
else d[i][j]=mx(d[i-1][j], d[i][j-1]);
}
for(i=m,j=n;i;){
if(a[i]==b[j]){sir[++bst]=a[i];i--;j--;}
else {if(d[i-1][j]<d[i][j-1])j--;
else i--;
}
}
fprintf(out, "%d\n", bst);
for(i=bst;i;i--)fprintf(out, "%d ", sir[i]);
fclose(in);fclose(out);
return 0;
}