Pagini recente » Cod sursa (job #2150202) | Cod sursa (job #2641278) | Cod sursa (job #943493) | Cod sursa (job #2178858) | Cod sursa (job #2541958)
#include <iostream>
#include <fstream>
using namespace std;
#define NMax 260
int M, N, A[NMax], B[NMax], sir[NMax], bst, sol[NMax];
int subsir(int nr)
{
int i, j = 1;
for (i = 1; i <= nr && j <= N; i++)
for (; j <= N && B[j] != sir[i]; ++j);
return j <= N;
}
void back(int nivel, int len)
{
int i;
if (nivel == M+1)
{
if (subsir(len))
if (len > bst)
{
bst = len;
for (i = 1; i <= bst; i++)
sol[i] = sir[i];
}
return ;
}
back(nivel+1, len);
sir[len+1] = A[nivel]; back(nivel+1, len+1);
}
int main(void)
{
int i;
ifstream fin("cmlsc.in");
ofstream fout("cmlsc.out");
fin >> M >> N;
for (i = 1; i <= M; i++)
fin >> A[i];
for (i = 1; i <= N; i++)
fin >> B[i];
back(1, 0);
fout << bst;
for (i = 1; i < bst; i++)
fout << sol[i];
fout << sol[bst];
return 0;
}