Pagini recente » Cod sursa (job #2527428) | Cod sursa (job #1189440) | Cod sursa (job #2667112) | Cod sursa (job #1851352) | Cod sursa (job #3214538)
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
ifstream cin ("cmlsc.in");
ofstream cout ("cmlsc.out");
int n,m,vector1[1001],vector2[1001],dp[1001][1001];
bool c[1001][1001];
void build(int i,int j)
{
if (!i || !j) return;
if (vector1[i]==vector2[j])
{
build(i-1,j-1);
cout << vector1[i] << " ";
}
else
if (dp[i-1][j]>dp[i][j-1]) build (i-1,j);
else build(i,j-1);
}
int main()
{
cin >> n >> m;
for (int i=1;i<=n;i++) cin >> vector1[i];
for (int i=1;i<=m;i++) cin >> vector2[i];
for (int i=1;i<=n;i++)
for (int j=1;j<=m;j++)
if (vector1[i]==vector2[j]) dp[i][j]=dp[i-1][j-1]+1;
else dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
//for (int i=1;i<=n;i++,cout << '\n')
// for (int j=1;j<=m;j++) cout << dp[i][j] << " ";
cout << dp[n][m] << '\n';
build(n,m);
return 0;
}