Pagini recente » Cod sursa (job #1105765) | Cod sursa (job #2549242) | Cod sursa (job #782658) | Cod sursa (job #1338324) | Cod sursa (job #1090196)
#include <fstream>
#define NMAX 102
using namespace std;
ifstream fin ("cmls.in");
ofstream fout ("cmls.out");
void citire();
void pd();
void afisare();
int n, m;
int A[NMAX], B[NMAX];
int LCS[NMAX][NMAX];
int main()
{
citire();
pd();
afisare();
return 0;
}
void citire()
{
int i;
fin >> n >> m;
for (i = 1; i <= n; i ++)
fin >> A[i];
for (i = 1; i <= m; i ++)
fin >> B[i];
}
void pd()
{
int i, j;
for (i = n; i > 0; i --)
for (j = m; j > 0; j --)
{
if (A[i] == B[j])
LCS[i][j] = 1 + LCS[i+1][j+1];
else
if (LCS[i][j+1] > LCS[i+1][j])
LCS[i][j] = LCS[i][j+1];
else
LCS[i][j] = LCS[i+1][j];
}
}
void afisare()
{
int i, j;
fout << LCS[1][1] << '\n';
i = 1; j = 1;
while (i <= n && j <= m)
{
if (A[i] == B[j])
{
fout << A[i] << ' ';
i ++; j ++;
}
else
if (LCS[i][j] == LCS[i+1][j])
i ++;
else
j ++;
}
fout << '\n';
}