Pagini recente » Cod sursa (job #3210720) | Cod sursa (job #521215) | Cod sursa (job #3271629) | Cod sursa (job #2413182) | Cod sursa (job #1155797)
#include <fstream>
#define NMAX 1035
using namespace std;
ifstream fin("cmlsc.in");
ofstream fout("cmlsc.out");
short n, m;
short a[NMAX], b[NMAX], d[NMAX];
short s[NMAX][NMAX];
int main()
{
fin>>n>>m;
for (int i = 1; i <= n; ++i)
fin>>a[i];
for (int i = 1; i <= m; ++i)
fin>>b[i];
for (int i = 1; i <= n; ++i)
for (int j = 1; j <= m; ++j)
if (a[i] == b[j]) s[i][j] = s[i-1][j-1]+1;
else s[i][j] = max(s[i-1][j], s[i][j-1]);
fout<<s[n][m]<<'\n';
int i = n;
int j = m;
int k = 0;
while (i>0)
{
if (a[i] == b[j]) { d[++k] = a[i]; --i; --j; }
else if (s[i-1][j] > s[i][j-1]) --i;
else --j;
}
for (i = k; i > 0; --i)
{
fout<<d[i]<<" ";
}
return 0;
}